1089 Commits
Author SHA1 Message Date
IzzyandGitHub 14f9baa30c Update build.yml 2025-12-08 04:30:19 -05:00
IzzyandGitHub 5313787a5c Update build.gradle.kts 2025-12-08 04:29:41 -05:00
IzzyandGitHub aa8f87ed73 Update build.gradle.kts 2025-12-08 04:20:58 -05:00
IzzyandGitHub ea0d608deb Update build.yml 2025-12-08 04:19:51 -05:00
IzzyandGitHub 15071d4b86 Update build.gradle.kts 2025-12-08 04:14:17 -05:00
IzzyandGitHub beb623f4aa Update build.yml 2025-12-08 04:13:16 -05:00
IzzyandGitHub 8ea4c50da4 Update build.yml 2025-12-08 04:06:14 -05:00
IzzyandGitHub 5f1c0af138 Update build.gradle.kts 2025-12-08 04:05:21 -05:00
IzzyandGitHub 2145dc67a9 Update CMakeLists.txt 2025-12-08 03:45:21 -05:00
IzzyandGitHub da3f6dbb80 Update build.gradle.kts 2025-12-08 03:30:25 -05:00
IzzyandGitHub 1192180e73 Update build.gradle.kts 2025-12-08 03:24:34 -05:00
IzzyandGitHub e741b9e36f Update build.yml 2025-12-08 03:23:05 -05:00
IzzyandGitHub 0da6b2f52e Update build.yml 2025-12-08 03:17:29 -05:00
IzzyandGitHub acf261f260 Add files via upload 2025-12-08 03:10:07 -05:00
izzy2lost 853d1d467e trying to git gha workflow to work 2025-12-08 03:05:45 -05:00
IzzyandGitHub 6dd5081b43 Update build.yml 2025-12-07 16:02:52 -05:00
IzzyandGitHub b595800e98 Update build.yml 2025-12-07 15:41:06 -05:00
IzzyandGitHub d770314825 Changed to ndk r29 2025-12-07 15:01:59 -05:00
IzzyandGitHub 52227c06ca Changed from java 21 to 17 2025-12-07 13:50:15 -05:00
izzy2lost 7f375d6654 Minor UI improvement 2025-10-25 18:37:14 -04:00
izzy2lost 866c6a08b2 better back button handling and exit game 2025-10-25 15:46:58 -04:00
izzy2lost 5ebc71c59d ui improvements 2025-10-25 15:08:24 -04:00
izzy2lost c717ec0c4c fixed about title crash 2025-10-25 13:16:42 -04:00
izzy2lost c88204f946 fix about info per game 2025-10-25 07:12:29 -04:00
izzy2lost eed0cb4344 added more gameids to download covers and additional game info 2025-10-25 06:53:17 -04:00
izzy2lost ac1949de1d added cover downloading 2025-10-25 05:06:16 -04:00
izzy2lost a46d74c20a change theme colors some more 2025-10-23 20:17:23 -04:00
izzy2lost a2989ae45e change theme colors 2025-10-23 15:51:11 -04:00
izzy2lost 1d79871aa6 make local build work 2025-10-23 15:22:46 -04:00
izzy2lost fa305ae1a2 updated java to 21 added some local .bat builds 2025-10-22 03:59:08 -04:00
izzy2lost 50c2003e0f add depends worflow 2025-10-22 02:56:53 -04:00
izzy2lost ee8fc3fa15 material icons added 2025-10-22 02:44:22 -04:00
izzy2lost 5678036590 m3 expressive theme 2025-10-21 15:46:01 -04:00
IzzyandGitHub d439fe4897 Delete src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp 2025-10-21 12:51:48 -04:00
IzzyandGitHub e051e08586 Delete src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp 2025-10-21 12:51:32 -04:00
IzzyandGitHub 8daae39a66 Delete src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp 2025-10-21 12:51:15 -04:00
IzzyandGitHub 029c0e64e7 Delete src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp 2025-10-21 12:50:59 -04:00
IzzyandGitHub 00be588058 Delete src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp 2025-10-21 12:50:46 -04:00
izzy2lost 1193871271 New app icon 2025-10-21 12:24:33 -04:00
izzy2lost 19574110ac Merge branch 'android' of https://github.com/izzy2lost/WeeU into android 2025-10-21 10:07:49 -04:00
izzy2lost cb023db394 more name changes 2025-10-21 10:07:40 -04:00
IzzyandGitHub 9be892a9aa Update settings.gradle.kts 2025-10-21 06:35:44 -04:00
izzy2lost 8f848cfa71 Change app name in files and folders 2025-10-21 05:46:15 -04:00
izzy2lost f7b9fbd52c Delete test stuff 2025-10-21 04:39:29 -04:00
izzy2lost 27816d89cc Revert "devlo: snapshot for thread user-thread-20251020073048"
This reverts commit 53ed3e3340.
2025-10-20 22:42:26 -04:00
izzy2lost 0e972ea0e4 Revert "devlo: snapshot for thread user-thread-20251020073455"
This reverts commit 756847ad79.
2025-10-20 22:42:15 -04:00
devloai[bot] 756847ad79 devlo: snapshot for thread user-thread-20251020073455 2025-10-20 07:47:42 +00:00
devloai[bot] 53ed3e3340 devlo: snapshot for thread user-thread-20251020073048 2025-10-20 07:47:42 +00:00
IzzyandGitHub 49188ed043 Update build.gradle.kts 2025-10-20 00:51:16 -04:00
IzzyandGitHub 0f1158c3bc Update vcpkg.json 2025-10-20 00:48:33 -04:00
IzzyandGitHub e51eaf4fa5 missing , 2025-10-20 00:39:47 -04:00
IzzyandGitHub 64baee6af9 Update fmt version 2025-10-20 00:35:18 -04:00
IzzyandGitHub d1522fb24c Update ndk 2025-10-19 22:53:57 -04:00
IzzyandGitHub 6f936888d1 Change trigger to workflow_dispatch in build.yml 2025-10-19 04:41:08 -04:00
IzzyandGitHub ef87d6218b Update generate_pot.yml 2025-10-19 03:16:22 -04:00
SSimco f81c5fbd13 Fix apk signing 2025-08-31 10:04:50 +03:00
SSimcoandGitHub 0af3920844 Merge branch 'cemu-project:main' into android-port 2025-08-30 23:18:26 +03:00
SSimco ae90fe7eb8 Fix typos 2025-08-30 23:00:23 +03:00
oltolmandGitHub 9267e72ef9 refactor: Fix pugixml deprecation warnings (#1677) 2025-08-30 20:39:48 +02:00
SSimco a9988361e6 update workflows 2025-08-30 21:32:27 +03:00
SSimco ffc6ab784e Fix wrong path for custom drivers 2025-08-30 21:21:23 +03:00
SSimco 905b11f986 Merge branch 'main' into android 2025-08-30 21:19:07 +03:00
SSimco deefc4e392 cleanup 2025-08-30 21:08:26 +03:00
SSimco 79d4e60692 cleanup submodules 2025-08-30 19:33:40 +03:00
SSimco 92d88fa866 update readme 2025-08-30 19:33:40 +03:00
SSimco 4c2e69445d Add option for pad position & removed side menu button 2025-08-30 19:33:40 +03:00
oltolmandGitHub 6013ac1823 refactor: Fix trivial compiler warnings (#1675) 2025-08-30 13:01:52 +02:00
SSimco 9bf84560a7 Update logging to check the format str at compile time 2025-08-29 21:18:09 +03:00
SSimco 5658466d84 Update build wf with common vcpk action 2025-08-29 21:17:47 +03:00
SSimco b8903f21e8 Update SAF handling 2025-08-29 21:17:14 +03:00
SSimco 6a3b7f0290 Add message catalogs to android assets 2025-08-27 14:45:56 +03:00
SSimco 8d717160e9 Update graphic packs 2025-08-26 22:25:24 +03:00
SSimco 91ce31ca9f Update title manager 2025-08-26 13:07:16 +03:00
oltolmandGitHub de4bf7c2c1 refactor: use concepts instead of SFINAE (#1652) 2025-08-25 01:33:46 +02:00
SSimco 71a0504691 Add missing overlay button 2025-08-20 09:40:16 +03:00
Exzap aeb3154257 debugger: Fix clipboard related crash
When copying an address from Cemu's debugger and pasting it into Cemu (anywhere) it would crash because the memory was released prematurely
2025-08-17 17:58:30 +02:00
SSimco 58d1625672 Fix graphic packs download error 2025-08-16 17:27:42 +03:00
capitalistspzandGitHub d7c510ed31 Update vcpkg dependency SDL2 to 2.32.8 (#1670) 2025-08-16 05:56:30 +02:00
SSimco f209413051 Add account settings 2025-08-09 17:33:07 +03:00
Crementif 57fe7a53f1 UI: Disable alpha for game list icons 2025-07-29 19:26:47 +02:00
SSimco 44f0e5acd3 Update wxgui 2025-07-27 23:21:01 +03:00
CrementifandGitHub 493b11e23a UI: Refresh debugger when graphic packs are loaded or unloaded (#1653) 2025-07-26 22:45:44 +02:00
CrementifandGitHub 191357c518 UI: Fix minor dark mode issues (#1654)
* Fix black text after graphic pack is disabled in dark mode
* Fix background colour of audio debugger in dark mode
* Make placeholder game list icons black when using dark mode
* Some tweaks to the HotkeySettings window:
  - Make strings translatable
  - Makes the column headers bold for clarity
  - Makes the border darker on Linux, fixed by @goeiecool9999
  - Make the column headers have some padding to make it look nicer.
2025-07-26 22:45:28 +02:00
SSimco 1292463a5b Update pot file generation 2025-07-26 15:21:25 +03:00
SSimco a660be1a16 Cleanup 2025-07-25 19:33:44 +03:00
SSimco eb803a8c8c Update about screen 2025-07-25 19:31:41 +03:00
SSimco cf03067f7a Update kotlin libraries 2025-07-25 19:13:08 +03:00
oltolmandGitHub 55a735dcfa Windows: Use modern API to set thread name if available (#1634) 2025-07-25 06:10:14 +02:00
CrementifandGitHub 08609591ae UI: Upgrade to wxWidgets 3.3.1 and add dark mode support for Windows (#1647) 2025-07-23 11:07:24 +02:00
Kevin ReinholzandGitHub 4efa40c51c Make it easy to build Cemu on BSD (#1632) 2025-07-23 08:59:09 +02:00
oltolmandGitHub 955ce9b973 UI: Fix static initialization in regards to hotkey map (#1643) 2025-07-23 01:05:56 +02:00
ZoweZilsioandGitHub 1ec8c713b4 CI: Fix deploy workflow for multiarch macos (#1642) 2025-07-20 23:14:11 +02:00
Exzap 73b1dc1663 UI: Add architecture to auto-updater check 2025-07-20 23:10:13 +02:00
SSimco 1f45589cea Add gettext translations 2025-07-20 16:38:03 +03:00
Exzap c1c2962b66 Switch to a different Discord RPC implementation
discord-rpc has been unmaintained for years
2025-07-20 00:53:10 +02:00
SSimco 8c83d88d55 Merge remote-tracking branch 'public/main' into android-port 2025-07-19 19:32:55 +03:00
Crementif 42ff3ad468 Fix debug assert that'd occur when closing the debug menu
Closing the settings window will immediately flush a temporary 0, 0 value it writes for the size which gets overwritten by the MainWindow a few seconds later.

In the code, -1 is considered the "off" state, and 0 is considered a "it should be saved, but only whenever the value is available". The save gamepad size/pos option already worked like this new behavior, since you might enable the option but not (previously) have it open yet. When encountering a 0 as the size, it'll just use the default window size of Cemu.
2025-07-16 16:14:55 +02:00
Crementif 2d74bcfbfa Fix regression with saving/loading child configs
Seems like a minor thing slipped under the radar in commit 67de63bed6
2025-07-16 16:08:09 +02:00
SSimcoandGitHub 67de63bed6 UI+build: Isolate wxWidgets code from non-GUI code (#1633) 2025-07-15 04:28:41 +02:00
Exzap 5f3c2816ec AX: Fix voice dropping 2025-07-08 19:01:20 +02:00
qurious-pixelandGitHub 7f62b145dd build: Build assembly in ih264d with cpp preprocessor (#1631) 2025-07-08 05:47:40 +02:00
AnimeGIFandGitHub cdca5eaf78 UI: Add configurable hotkeys + a new fast forward hotkey (#1519) 2025-07-07 23:55:57 +02:00
goeiecool9999 e68c31e5fb Fix path text encoding creating shortcuts on windows
also fix a memory leak
(hopefully)
fixes: #1627
2025-07-02 13:31:21 +02:00
qurious-pixelandGitHub 35ecfa3f54 build: Fix glslang dependency for Fedora 42 (#1622) 2025-07-01 05:00:11 +02:00
oltolmandGitHub 6c392d5a22 UI: Fix assertions (#1623) 2025-06-30 00:15:23 +02:00
Colin KinlochandGitHub 9fb3c76b76 UI: Include wx button header for wxWidgets 3.3 compatibility (#1621) 2025-06-29 19:36:22 +02:00
Exzap 13ccf9a160 MMU: Fix bit width for 32bit MMIO reads
This resolves the ghost input issue in N64 virtual console
2025-06-28 21:43:40 +02:00
Exzap 7db2b77983 CPU: Implement more instructions in interpreter + various fixes
All of the changes are verified against real hardware, except for the byte string instructions
2025-06-28 14:54:31 +02:00
capitalistspzandGitHub 0a121c97c7 Input: Detect Classic Controller Pro as Classic Controller (#1614) 2025-06-26 17:25:34 +02:00
SSimco b20a0a1374 refactor 2025-06-25 17:10:37 +03:00
Exzap e91740cf29 coreinit: Make sure thread deallocation runs before join returns
Fixes crash in Coaster Crazy Deluxe
2025-06-22 23:34:41 +02:00
Exzap 4f4c9594ac GX2: Fix command buffer padding writing out of bounds 2025-06-22 22:17:29 +02:00
Exzap 5a4731f919 HLE: Make HLE table access thread-safe
Previous code could sometimes resize the vector while a read access was happening
2025-06-22 20:56:47 +02:00
Exzap 522b5ef260 UI: Correctly interpret supporter names as UTF8 2025-06-21 18:58:58 +02:00
capitalistspzandGitHub 057ef4598e cmake: Respect ENABLE_HIDAPI option (#1604) 2025-06-20 13:32:41 +02:00
Joshua de ReeperandGitHub 4f4412b334 nsyshid: Play Emulated Portal Audio via Mono Audio (#1478) 2025-06-19 23:30:19 +02:00
SSimco f14536635c Add emulation settings 2025-06-18 19:07:29 +03:00
ExvergeandGitHub 00ff5549d9 General aarch64 improvements & Apple Silicon support (#1255) 2025-06-18 10:36:05 +02:00
oltolmandGitHub c8ffff8f41 Replace basic_string<> of betype with std::vector (#1601) 2025-06-18 10:34:06 +02:00
oltolmandGitHub 2f02fda9ea Refactor to use Microsoft::WRL::ComPtr (#1599) 2025-06-16 23:25:06 +02:00
SSimco 89ec2f0591 Update sensor manager to check device orientation 2025-06-15 20:00:10 +03:00
SSimco d5bb3e44e8 Add data files 2025-06-15 20:00:06 +03:00
oltolmandGitHub da98aa4176 UI: Make code compatible with wxWidgets 3.3 (#1598) 2025-06-14 20:38:53 +02:00
oltolmandGitHub 95dc590d2c UI: Improve wxListView sorting and add sort order indicators (#1597) 2025-06-14 10:25:56 +02:00
goeiecool9999andGitHub f3fe6f3455 GameList: Allow sorting by more columns (#1571) 2025-06-13 12:47:46 +02:00
oltolmandGitHub 2eec6b44c3 UI: Use wxListView instead of wxListCtrl (#1584) 2025-06-10 08:15:25 +02:00
LuminyxandGitHub 3eff2d4a60 GraphicPack: Allow overlay for code folder (#1574) 2025-06-10 08:03:18 +02:00
WiicheleandGitHub d427b59019 boss: Use HTTP/1.1 instead of default (#1593) 2025-06-08 07:16:09 +02:00
neebyAandGitHub a184a04e56 macOS: Minor UI improvements (#1575) 2025-06-07 22:42:49 +02:00
Colin KinlochandGitHub 162fdabb9d debug: "verbose" command line argument to log to stdout (#1587) 2025-06-02 01:38:21 +02:00
Colin KinlochandGitHub c8045f7f04 UI: wxCAPTION flag on input API dialog to fix kwin (#1586) 2025-06-01 03:57:33 +02:00
oltolmandGitHub 6df3e1742e UI: Fix wxWidgets assert in InfinityPage (#1582) 2025-05-31 16:29:07 +02:00
oltolmandGitHub 152b790242 UI: Use wxID_ANY and wxNOT_FOUND instead of hardcoding -1 (#1581) 2025-05-30 01:39:02 +02:00
SSimco de58ae7d98 Reapply "GX2: Use atomic pointers rather than mutex (#3)"
This reverts commit aa878cc938.
2025-05-29 18:44:02 +03:00
SSimco 55efe4ca2b Reapply "fix for recompiler/interperter crash on arm"
This reverts commit 657662d1bb.
2025-05-29 18:43:56 +03:00
SSimco a0bf8dab7d Revert "GX2+TCL: Reimplement command buffer submission"
This reverts commit 28ea70b6d8.
2025-05-29 18:42:47 +03:00
capitalistspzandGitHub 02616bf6be build: Allow Linux builds to be made without Bluez (#1579) 2025-05-28 15:18:01 +02:00
SSimco be10f8859e Merge branch 'main' into android 2025-05-28 09:30:18 +03:00
SSimco 657662d1bb Revert "fix for recompiler/interperter crash on arm"
This reverts commit fb03e66041.
2025-05-28 09:29:02 +03:00
SSimco aa878cc938 Revert "GX2: Use atomic pointers rather than mutex (#3)"
This reverts commit 1e15f337ec.
2025-05-28 09:28:40 +03:00
Exzap 7168d20cde FST: Refactor IV handling 2025-05-27 16:51:46 +02:00
SSimco 2de02eaaaa refactor 2025-05-20 12:09:12 +03:00
Exzap 783d88a892 coreinit: Fix race condition in __FSAIoctlResponseCallback 2025-05-17 21:35:42 +02:00
Exzap 28ea70b6d8 GX2+TCL: Reimplement command buffer submission
- GX2 utilizes TCL(.rpl) API for command submission instead of directly writing to an internal GPU fifo
- Submission & retire timestamps are correctly implemented as incremental counters
- Command buffering behaviour matches console
- Fixes race conditions on aarch64
2025-05-17 21:35:42 +02:00
Exzap 96765e4ac6 Latte: Refactor clear code 2025-05-17 20:47:01 +02:00
gamerbrossandGitHub 111637a9fd nsyshid: Skylander 360 Portal small optimization and code formatting (#1568) 2025-05-15 19:58:43 +02:00
IssaandGitHub bed5fdb195 UI: Disable Ctrl+Q shortcut on non-macOS platforms to prevent accidental exits during gameplay (#1565) 2025-05-13 03:38:11 +02:00
shinra-electricandGitHub 996539fce8 CI: Bump MoltenVK to v1.3.0 (#1559) 2025-05-12 20:12:40 +02:00
MefiresuandGitHub 05617a332b dmae: Implement 16bit endian swap for DMAECopyMem (#1564) 2025-05-12 18:16:14 +02:00
Joshua de ReeperandGitHub caef34f2ff nsyshid: Add Kamen Rider USB Device to Whitelist (#1560) 2025-05-12 09:28:01 +02:00
neebyAandGitHub f801fc1fe8 Fix Mac build for Xcode 16.3 (#1558) 2025-05-12 00:08:25 +02:00
Exzap 61484598fc Vulkan: Use per-pipeline buffer robustness
And if the extension is not supported then fallback to enabling robust buffer access for all shaders.
2025-05-10 09:49:21 +02:00
SSimco 5987b3d8ae Merge branch 'main' into android 2025-05-09 16:57:28 +03:00
SSimcoandGitHub 081ebead5f Add AArch64 recompiler backend (#1556) 2025-05-09 12:47:22 +02:00
SSimco a72e2deb6c update aarch64 jit 2025-05-09 11:01:58 +03:00
Exzap d13dab0fd8 Vulkan: During shutdown submit buffer before deleting resources 2025-05-09 10:00:38 +02:00
SSimco be641952a4 Merge branch 'main' into android 2025-05-09 07:14:56 +03:00
Exzap ba09daf328 PPCRec: Reenable float copy optimization 2025-05-09 02:06:08 +02:00
Exzap 557aff4024 PPCRec: Implement PSQ scaling 2025-05-08 08:29:47 +02:00
SSimco d4f18aa791 Merge branch 'main' into android 2025-05-08 09:15:15 +03:00
ExzapandGitHub de542410c2 PPCRec: Rework floating point instructions (#1554) 2025-05-08 03:48:22 +02:00
gamerbrossandGitHub 33d5c6d490 nsyshid: Add Skylander Xbox 360 Portal support (#1550) 2025-05-04 21:44:46 +02:00
CrementifandGitHub 352a918494 debug: add CLI option to have multi-core interpreter (#1553)
This option still allows you to have proper stack traces for crashes or for the PPC debugger, but is a lot faster then the really slow interpreter (especially when loading into large games like BotW where there has to be a lot of asset decompressing). It makes memory access breakpoints much more brittle though, so it's not a perfect option.

Normal users should of course stick with using the recompiler.
2025-05-04 18:04:26 +02:00
Crementif d083fc0470 Reorder PPCInterpreter memory layout to keep plugin compatibility
Commit b089ae5b32 changed the PPCInterpreter struct that external plugins rely on to hook Cemu through e.g. the exported "osLib_registerHLEFunction". This commit moves some unused values down so that it keeps the same memory layout as before the PPC recompiler rework.
2025-05-04 17:19:56 +02:00
neebyAandGitHub fa7ae84314 macOS: Fix browsing of directory paths with spaces (#1546) 2025-05-04 13:46:01 +02:00
ShikakibenandGitHub 00099c5ecc Set StartupWMClass in .desktop file (#1552) 2025-05-04 13:29:27 +02:00
SSimco 44b22b9eb1 Merge branch 'main' into android 2025-05-03 19:57:43 +03:00
SSimco a0531916ec refactor android input code 2025-04-28 08:39:14 +03:00
SSimco 119b39ab19 refactor emulation activity 2025-04-28 08:36:44 +03:00
SSimco 09eb9e5b48 refactor native code 2025-04-28 08:34:02 +03:00
goeiecool9999 e6a64aadda undo revert of style improvement 2025-04-27 17:03:00 +02:00
goeiecool9999 a5f3558b79 Revert "fix building with fmt11 and GCC"
This reverts commit 372c314f06.
It broke formatting in an attempt to fix GCC builds.
Some other change (perhaps dependency updates) has resolved the issue.
2025-04-27 16:57:22 +02:00
ExzapandGitHub b089ae5b32 PowerPC recompiler rework (#641) 2025-04-26 17:59:32 +02:00
Exzap 06233e3462 UI: Fix wxWidgets debug assert
Adding the same component multiple times is not allowed. Use sizers instead
2025-04-16 14:36:11 +02:00
Exzap 4972381edc Vulkan: Fix imgui validation error when sRGB framebuffer is used 2025-04-15 22:46:19 +02:00
Exzap cd6eb1097b Vulkan: Fix a validation error + minor code refactor
We were using VK_EXT_DEPTH_CLIP_ENABLE but didn't actually request it.

Also fixed an assert when closing Cemu caused by incorrectly tracking the number of allocated pipelines
2025-04-15 21:10:11 +02:00
Exzap c4eab08f30 Update vcpkg 2025-04-03 19:11:14 +02:00
mitoposterandGitHub 57ff99ce53 cubeb: Show default device option even if enumerating devices fails (#1515) 2025-03-19 17:06:55 +01:00
capitalistspzandGitHub 8b5cafa98e Wiimote/L2CAP: More accurate descriptions for descriptors (#1512) 2025-03-13 01:09:45 +01:00
SSimco d2e7ddf613 Fix build 2025-03-10 21:29:39 +02:00
SSimco 356a573b45 Merge branch 'main' into android 2025-03-10 19:31:44 +02:00
SSimco 00eb8f95e4 Update doc 2025-03-10 19:14:20 +02:00
SSimco 3bc76a7048 cleanup 2025-03-10 19:11:37 +02:00
SSimco 0c412caa09 Refactor input overlay 2025-03-10 18:04:26 +02:00
SSimco d6e226f129 Replace boost-context dep 2025-03-10 18:04:26 +02:00
SSimco b9ff29ba86 recompiler refactor 2025-03-10 18:04:26 +02:00
SSimco 8c74158078 cleanup code 2025-03-10 18:04:26 +02:00
SSimco 72cf7c7587 Save settings only on activity pause 2025-03-10 18:04:26 +02:00
SSimco fdb1f27e7d Add gui for adding custom drivers 2025-03-10 18:04:23 +02:00
SSimco e919c23ea5 Refactored gamelist & emulation gui code 2025-03-10 17:15:53 +02:00
SSimco f73b921349 Added title manager 2025-03-10 17:15:53 +02:00
SSimco 9db3f87549 Updated cubeb dep 2025-03-10 17:15:53 +02:00
SSimco 199fcefa89 Refactored android code 2025-03-10 17:15:53 +02:00
SSimco c25233404e Refactored input overlay code 2025-03-10 17:15:53 +02:00
SSimco c587f73810 Rewrite with compose 2025-03-10 17:15:53 +02:00
SSimco 5631c5a0ec Updated android code 2025-03-10 17:15:53 +02:00
SSimco 544288c598 Refactor rec code 2025-03-10 17:15:53 +02:00
SSimco 1fc73e8cc9 Update build.yml 2025-03-10 17:15:53 +02:00
SSimco 827b607629 Fixed crash when changing controller types 2025-03-10 17:15:53 +02:00
SSimco 24b1cff66d Added logging of unhandled exception from java code 2025-03-10 17:15:53 +02:00
SSimco a5483910d5 Refactored input gui code 2025-03-10 17:15:53 +02:00
SSimco 0d07c11066 Downgrade ndk ver 2025-03-10 17:15:53 +02:00
SSimco 562b86dd8f Latte: Add dummy params in shaders 2025-03-10 17:15:53 +02:00
SSimco 6e4ba0a9b5 Fixed wrong month being reported for playstat 2025-03-10 17:15:53 +02:00
SSimco 7fc00c47b8 Update atomic_cmp_store to use cas inst 2025-03-10 17:15:53 +02:00
capitalistspzandSSimco 3de504f8ec Make MEMPTR<T> a little more T*-like (#1385) 2025-03-10 17:15:53 +02:00
SSimco 991c36e019 Implement getting cpu name for aarch64 linux 2025-03-10 17:15:51 +02:00
CrementifandGitHub 186e92221a debugger: allow printing registers using logging breakpoint placeholders (#1510)
This allows a savy user, developer or modder to change the comment field of a logging breakpoint to include placeholders such as {r3} or {f3} to log the register values whenever that code is hit.
2025-03-07 23:40:17 +01:00
goeiecool9999 31d2db6f78 OpenGL: Add explicit/matching qualifiers in output shader interface
fixes issues with old intel drivers
2025-03-05 22:23:06 +01:00
capitalistspzandGitHub ebb5ab53e2 Add menu item for opening shader cache directory (#1494) 2025-02-14 20:56:51 +01:00
capitalistspzandGitHub a6fb0a48eb BUILD.md: Provide more info about build configuration flags (#1486) 2025-02-04 10:56:33 +01:00
Exzap ec2d7c086a coreinit: Clean up time functions 2025-01-30 03:49:17 +01:00
Exzap c714e8cb6b coreinit: Time to tick conversion is unsigned
The result is treated as signed in most cases, but the calculation uses unsigned arithmetic.

As a concrete example where this matters, DS VC passes -1 (2^64-1) to OSWaitEventWithTimeout which internally causes an overflow. But only with unsigned arithmetic this will result in a large positive number that behaves like the intended infinite timeout. With signed arithmetic the result is negative and the events will timeout immediately.
2025-01-30 03:32:24 +01:00
goeiecool9999andGitHub e834515f43 Vulkan: Improve post-shutdown cleanup and minor improvements (#1401) 2025-01-23 21:20:03 +01:00
Exzap 4f9eea07e0 CI: Update action version 2025-01-23 21:06:07 +01:00
goeiecool9999 372c314f06 fix building with fmt11 and GCC 2025-01-23 21:03:11 +01:00
Exzap 5bd253a1f8 Revert "Fix building against fmt 11.1.0 (#1474)"
Reverting commit 4ac65159ef because game profile enums use the stringifying formatters from config.h and are not supposed to store raw integers
2025-01-23 17:33:06 +01:00
Alexandre BouvierandGitHub 4ac65159ef Fix building against fmt 11.1.0 (#1474) 2025-01-16 12:54:29 +01:00
Joshua de ReeperandGitHub eab1b24320 nsyshid: Initialise interface index as 0 (#1473) 2025-01-12 20:20:48 +01:00
ExzapandGitHub 07cd402531 Update precompiled.h 2025-01-12 18:33:15 +01:00
Joshua de ReeperandGitHub 0a59085021 nsyshid: Make Libusb the Windows backend (#1471) 2025-01-12 14:33:24 +01:00
ExzapandGitHub 8dd809d725 Latte: Implement better index caching (#1443) 2025-01-12 12:39:02 +01:00
rcaridade145andGitHub 1923b7a7c4 Vulkan: Added R5_G6_B5_UNORM to supported readback formats (#1430) 2025-01-12 12:37:56 +01:00
brysma1andGitHub f61539a262 Update build instructions for fedora and add troubleshooting step for alternative architectures (#1468) 2025-01-08 04:22:55 +01:00
CrementifandGitHub 92021db230 Use one CPU emulation thread for --force-interpreter (#1467) 2025-01-05 04:08:13 +01:00
CrementifandGitHub 4b792aa4d2 debug: Fix shader dumping (#1466) 2025-01-04 20:38:42 +01:00
capitalistspzandGitHub 1e30d72658 build: Add ALLOW_PORTABLE flag (#1464)
* Add ALLOW_PORTABLE cmake flag
* Also check that `portable` is a directory
2024-12-30 18:49:51 +01:00
Mike LothianandGitHub 2b0cbf7f6b Fix building against Boost 1.87.0 (#1455) 2024-12-18 22:15:42 +01:00
goeiecool9999andGitHub 3738ccd2e6 Play bootSound.btsnd while shaders/pipelines are compiling (#1047) 2024-12-18 15:55:23 +01:00
Exzap b53b223ba9 Vulkan: Use cache for sampler objects 2024-12-16 13:05:22 +01:00
Exzap 6aaad1eb83 Debugger: Added right click context menu to disasm view + small fixes 2024-12-16 13:05:22 +01:00
Exzap adab729f43 UI: Correctly handle unicode paths during save export 2024-12-16 13:05:22 +01:00
capitalistspzandGitHub dd0af0a56f Linux: Allow connecting Wiimotes via L2CAP (#1353) 2024-12-07 12:02:40 +01:00
Exzap 934cb54605 Properly check if MLC is writeable 2024-12-07 10:26:17 +01:00
Exzap 356cf0e5e0 Multiple smaller HLE improvements 2024-12-07 10:26:17 +01:00
Exzap e2d0871ca3 Camera: Set error code in CAMInit
Fixes Hunter's Trophy 2 crashing on boot
2024-12-07 10:26:17 +01:00
Cemu-Language CI 40d9664d1c Update translation files 2024-12-07 07:14:20 +00:00
neebyAandGitHub eca7374567 Set version for macOS bundle (#1431) 2024-12-02 05:19:15 +01:00
Jeremy KescherandGitHub 80a6057512 build: Fix linker failure with glslang 15.0.0 (#1436) 2024-12-02 01:01:22 +01:00
capitalistspzandGitHub 0735237686 Input: Move pairing dialog button and source (#1424) 2024-11-30 23:05:50 +01:00
capitalistspzandGitHub 90eb2e01f4 nsyshid/dimensions: add missing return (#1425) 2024-11-22 13:43:12 +01:00
Exzap 409f12b13a coreinit: Fix calculation of thread total awake time 2024-11-21 20:34:24 +01:00
Exzap 7b513f1744 Latte: Add workaround for infinite loop in Fatal Frame shaders 2024-11-21 20:34:24 +01:00
Exzap c3e29fb619 Latte: Add support for shader instructions MIN_UINT and MAX_UINT
Seen in the eShop version of Fatal Frame
Also made some warnings less spammy since this game seems to trigger it a lot
2024-11-21 20:34:24 +01:00
Exzap 2065ac5f63 GfxPack: Better logging messages for diagnosing problems in rules.txt 2024-11-21 20:34:24 +01:00
goeiecool9999andGitHub 269d5b9aab Vulkan: Make scaling shaders compatible + fixes (#1392) 2024-11-16 10:02:43 +01:00
Exzap 6f9f3d52ea CI: Remove outdated workflow 2024-11-13 06:38:17 +01:00
Exzap 719c631f13 config: Fix receive_untested_updates using the wrong default 2024-11-13 06:29:24 +01:00
Exzap 66658351c1 erreula: Rework implementation and fix bugs
- ErrEula doesn't disappear on its own anymore. The expected behavior is for the game to call Disappear once a button has been selected. This fixes issues where the dialog would softlock in some games
- Modernized code a bit
- Added a subtle fade in/out effect
2024-11-13 06:29:24 +01:00
Exzap a5717e1b11 FST: Refactoring to fix a read bug + verify all reads
- Fixes a bug where corrupted data would be returned when reading files from unhashed sections with non-block aligned offset or size
- Added hash checks for all reads where possible. This means that FST now can automatically catch corruptions when they are encountered while reading from the volume
2024-11-13 06:29:23 +01:00
Joshua de ReeperandGitHub ca2e0a7c31 nsyshid: Add support for emulated Dimensions Toypad (#1371) 2024-11-11 08:58:01 +01:00
capitalistspzandGitHub 2e829479d9 nsyshid/libusb: correct error message formatting and print error string on open fail (#1407) 2024-11-09 06:22:13 +01:00
capitalistspzandGitHub 4ac1ab162a procui: swap tickDelay and priority args in callbacks (#1408) 2024-11-09 06:21:06 +01:00
SamoZ256andGitHub 813f9148b1 macOS: Fix absolute path to libusb dylib (#1405) 2024-11-07 07:09:35 +01:00
SamoZ256andGitHub 9941e00b54 macOS: Fix libusb path for bundle (#1403) 2024-11-05 22:22:00 +01:00
Exzap 1c49a8a1ba nn_nfp: Implement GetNfpReadOnlyInfo and fix deactivate event
Fixes Amiibos not being detected in MK8
2024-11-01 22:47:19 +01:00
SSimco d2f81f30ab Refactored contenturi stream 2024-10-31 10:24:43 +02:00
capitalistspzandGitHub 47001ad233 Make MEMPTR<T> a little more T*-like (#1385) 2024-10-30 23:10:32 +01:00
SSimco a8370684a1 Update build.yml 2024-10-30 16:40:47 +02:00
SSimco f9c4b3aed7 Merge branch 'main' into android 2024-10-29 21:50:00 +02:00
SSimco 68d8d621c2 Updated generic game error message to include path 2024-10-29 21:40:59 +02:00
SSimco afe29d5b1d Refactored code 2024-10-29 21:40:53 +02:00
goeiecool9999andGitHub 459fd5d9bb input: Fix crash when closing add controller dialog before search completes (#1386) 2024-10-28 09:37:30 +01:00
SSimco bdd6b3f835 Updated swkbd to use native android input 2024-10-25 21:16:47 +03:00
capitalistspzandGitHub 63e1289bb5 Windows: Save icons to Cemu user data directory (#1390) 2024-10-25 18:48:21 +02:00
SSimco e8ebeab313 Update reg indices 2024-10-21 08:50:02 +03:00
SSimco f9e91723b7 Fix typo 2024-10-19 22:30:40 +03:00
goeiecool9999andGitHub f9a4b2dbb1 input: Add option to make show screen button a toggle (#1383) 2024-10-19 01:56:56 +02:00
goeiecool9999 d6575455ee Linux: Fix crash on invalid command-line arguments
use std::cout instead of wxMessageBox which does not work when wxWidgets has not been initialised yet
2024-10-17 22:24:20 +02:00
SSimco 356b1fff56 Merge branch 'main' into android 2024-10-17 19:20:03 +03:00
SSimco 583ff53936 Updated java deps 2024-10-17 19:13:37 +03:00
SSimco 4e3b267c4d Refactored input java code 2024-10-17 19:13:37 +03:00
SSimco c2014b16da Refactored selection view item 2024-10-17 19:13:37 +03:00
goeiecool9999andSSimco fb94873230 Vulkan: Protect against uniform var ringbuffer overflow (#1378) 2024-10-17 19:13:37 +03:00
Alexandre BouvierandSSimco 6016f2e298 Add support for fmt 11 (#1366) 2024-10-17 19:13:37 +03:00
SSimco 669fb5533d Added option to set the console language 2024-10-17 19:13:37 +03:00
SSimco c68665a1b4 Refactored UI code 2024-10-17 19:13:37 +03:00
SSimco 82f0a24e80 Removed unused imports 2024-10-17 19:13:37 +03:00
SSimco 15183df480 Check for alternative mem types & optional extensions 2024-10-17 19:13:37 +03:00
SSimco 47a4a43774 Updated layout 2024-10-17 19:13:37 +03:00
SSimco deb307ef95 Refactored code 2024-10-17 19:13:32 +03:00
goeiecool9999andGitHub 3acd0c4f2c Vulkan: Protect against uniform var ringbuffer overflow (#1378) 2024-10-14 14:03:36 +02:00
SSimco c58cbb4787 Added missing audio delay setting 2024-10-13 12:35:24 +03:00
SSimco 0992908d69 Replaced checkboxes with toggles 2024-10-13 12:20:00 +03:00
SSimco 3cf3cb1a9e Updated java dependencies 2024-10-13 12:13:53 +03:00
SSimco 1d17abd9d9 Added context menu for game list 2024-10-13 12:13:50 +03:00
SSimco 6c0dc45f86 Removed unused test 2024-10-12 09:59:22 +03:00
Alexandre BouvierandGitHub 6dc73f5d79 Add support for fmt 11 (#1366) 2024-10-03 08:48:25 +02:00
SSimco 93b2c73e0c Fixed folder deletion 2024-09-27 02:01:55 +03:00
SSimco 0c05c3e87f Fix bc5 decoding 2024-09-27 01:41:35 +03:00
SSimco a08958f3b6 Added option to show input overlay & quit during emulation 2024-09-26 21:09:05 +03:00
SSimco e4bacd8262 Added missing graphics & overlay settings 2024-09-26 20:13:00 +03:00
SSimco 6026d2ad96 Refactored native library 2024-09-26 18:33:14 +03:00
SSimco 35d7ad6414 Fixed not setting dpad values 2024-09-26 16:06:35 +03:00
SSimco 99a5db20eb Decode unsuported formats 2024-09-26 09:06:07 +03:00
SSimco fa6f834974 Disable unsupported features 2024-09-25 23:46:09 +03:00
SSimco 2b619cfcfb Added option to open the cemu folder 2024-09-25 18:40:37 +03:00
SSimco c8fe2428a0 Added check for alernative R8G8B8A8 format 2024-09-25 09:13:18 +03:00
SSimco 32795e1e25 Fixed conversion from native paths & check for intent data if launch
path from extras was null
2024-09-22 07:59:28 +03:00
SSimco 317e207948 Updated release workflow 2024-09-22 00:36:31 +03:00
SSimco da7af728a9 Fixed dep 2024-09-21 21:58:40 +03:00
SSimco bc2b573053 Fixed key text not showing 2024-09-21 21:56:55 +03:00
SSimco 25ea6ddf47 Merge branch 'main' into android 2024-09-21 21:52:34 +03:00
SSimco be23c47cac Pass c++ exception to java for renderer functions 2024-09-21 21:48:37 +03:00
SSimco 80ea25b10f Added support for opening titles using file managers 2024-09-21 20:48:39 +03:00
capitalistspzandGitHub 8508c62540 Various smaller code improvements (#1343) 2024-09-17 02:00:26 +02:00
Andrea ToskaandGitHub adffd53dbd boss: Fix BOSS not honoring the proxy_server setting (#1344) 2024-09-16 12:40:38 +02:00
goeiecool9999andGitHub a05bdb172d Vulkan: Add explicit synchronization on frame boundaries (#1290) 2024-09-15 20:23:11 +02:00
Cemu-Language CI 1a4d9660e7 Update translation files 2024-09-08 15:40:13 +00:00
Exzap ba54d1540c Fix "Receive untested updates" option not being synced to config 2024-09-08 17:21:20 +02:00
SSimco cc10f93030 Updated android workflow to create storefile only if the secret is available 2024-09-04 13:51:29 +03:00
SSimco 75223fcf36 Refactored fileutils code 2024-09-04 11:30:03 +03:00
SSimco 882c840ae6 Removed unused icon 2024-09-04 07:40:52 +03:00
SSimco 0037544a00 Refactored game list code & added option to remove & add multiple game paths 2024-09-03 19:34:15 +03:00
SSimco 1485d0e315 Updated icon 2024-09-03 19:27:14 +03:00
MoonlightWave-12andGitHub 0d8fd7c0dc appimage: Do not copy libstdc++.so.6 to usr/lib/ (#1319) 2024-09-02 21:22:38 +02:00
Joshua de ReeperandGitHub b06990607d nsysnet: Avoid crash on NULL timeout in select (#1324) 2024-09-02 16:20:16 +02:00
SSimco 81c0e4a465 Added support for motion 2024-09-02 14:25:04 +03:00
SSimco d0eac6f470 Fixed not being able to resize some buttons 2024-09-01 22:34:47 +03:00
SSimco 3678a0e474 Added option to show graphic packs for installed games only 2024-09-01 22:34:44 +03:00
SSimco f0effa0f31 Fixed github workflow for android 2024-09-01 17:45:33 +03:00
SSimco dceec9e20a Added options to show the gamepad & added a menu when in game 2024-09-01 17:44:33 +03:00
SSimco c1fc52d169 Updated overlay settings 2024-09-01 09:47:46 +03:00
SSimco 52d73c2f3e Fix count cycles macro for count cycles > 4095 2024-09-01 09:42:45 +03:00
SSimco d5d686c3bf Fixed gamepad volume enable/disable toggle 2024-09-01 07:25:52 +03:00
SSimco 3e8d56c022 Refactor code 2024-09-01 07:25:49 +03:00
SSimco 972e655a9b Send touch events to Input manager 2024-08-31 11:28:58 +03:00
SSimco 5e129a87cb Update deprecated attribute 2024-08-30 20:23:52 +03:00
SSimco 73c864f196 WIP: refactor code 2024-08-30 20:22:58 +03:00
SSimco 655dd1ca2f Cleanup code 2024-08-30 20:22:39 +03:00
SSimco 15e64c48e3 Add x64 check for ATTR_MS_ABI 2024-08-30 20:22:18 +03:00
SSimco 87315d3457 Update xbyak dep 2024-08-30 20:21:26 +03:00
SSimco c2fb43ca96 Update recompiler tests 2024-08-30 20:15:29 +03:00
squidbusandGitHub 9a53b19403 CI+build: Improve macOS builds (#1310) 2024-08-28 11:06:49 +02:00
Cemu-Language CI 03484d2146 Update translation files 2024-08-28 09:05:50 +00:00
SSimco 89bdaad188 Update xbyak 2024-08-27 10:50:52 +03:00
SSimco 527ac0e575 Implement DCBZ 2024-08-26 20:15:43 +03:00
SSimco 8e38264c10 Merge branch 'main' into android 2024-08-26 16:07:04 +03:00
SSimco 912a4af5b4 Merge branch 'main' into android 2024-08-26 16:06:43 +03:00
ExzapandGitHub 1234e2c118 Preparations for 2.1 (#1306) 2024-08-26 11:43:38 +02:00
ExvergeandGitHub 1e15f337ec GX2: Use atomic pointers rather than mutex (#3)
* Revert "fix for recompiler/interperter crash on arm"

This reverts commit fb03e66041.

* gx2: Use atomic pointers for GX2WriteGatherPipeState
2024-08-26 12:22:55 +03:00
SSimco df40605042 Fix nav 2024-08-26 12:21:30 +03:00
SSimco 691974bc96 Updated gradle 2024-08-26 12:21:04 +03:00
SSimco 860966a946 Added arm64 toolchain cmake file 2024-08-26 12:20:37 +03:00
SSimco 4c929264fe Update xbyak dependency & reimplement some instructions 2024-08-26 12:18:01 +03:00
SSimco 14a29617fe WIP: recompiler tests 2024-08-26 12:16:30 +03:00
Cemu-Language CI d7f39aab05 Update translation files 2024-08-26 09:16:11 +00:00
blandGitHub dc9d99b03b nn_fp: Implement GetMyComment and UpdateCommentAsync (#1173) 2024-08-24 21:03:03 +02:00
Exzap 573c98b2f8 GfxPack: Workaround for invisible detail panel
Fixes #1307
There is probably a better way to calculate the maximum width. But this suffices for now as a workaround
2024-08-23 19:26:33 +02:00
Cemu-Language CI 9e53c1ce27 Update translation files 2024-08-22 05:17:01 +00:00
Exzap 958137a301 vpad: Keep second channel empty if no extra GamePad is configured 2024-08-15 18:27:08 +02:00
20943204920434andGitHub 294a6de779 Update appimage.sh to support runtime libstdc++.so.6 loading (#1292)
Add checkrt plugin in order to detect the right libstdc++.so.6 version to load.
2024-08-15 16:22:41 +02:00
Exzap 2843da4479 padscore: Invoke sampling callbacks every 5ms
This fixes high input latency in games like Pokemon Rumble U which update input via the sampling callbacks
2024-08-15 05:00:09 +02:00
Exzap b0bab273e2 padscore: Simulate queue behaviour for KPADRead 2024-08-15 02:16:24 +02:00
Skyth (Asilkan)andGitHub c49296acdc Add support for iterating directories in graphics pack content folders. (#1288) 2024-08-13 15:53:04 +02:00
goeiecool9999andGitHub a6d8c0fb9f CI: Fix macOS build (#1291) 2024-08-13 15:48:13 +02:00
Exzap e551f8f524 Fix clang compile error 2024-08-13 05:57:55 +02:00
Exzap f52970c822 Vulkan: Allow RGBA16F texture format with SRGB bit 2024-08-13 04:47:43 +02:00
Exzap e02cc42d67 COS: Implement PPC va_list, va_arg and update related functions 2024-08-13 01:00:56 +02:00
goeiecool9999andGitHub 9812a47cb1 clang-format: Put class braces on a new line (#1283) 2024-08-08 19:35:50 +02:00
Exzap 7fd532436d CI: Manual unshallow of vcpkg is no longer needed 2024-08-08 16:07:45 +02:00
Exzap 598298cb3d Vulkan: Fix stencil front mask 2024-08-08 16:07:45 +02:00
goeiecool9999andGitHub 54e695a6e8 git: unshallow vcpkg, shallow vulkan-headers and imgui (#1282) 2024-08-08 15:58:24 +02:00
Exzap bf2208145b Enable async shader compile by default 2024-08-07 16:35:15 +02:00
Exzap b52b676413 vcpkg: Automatically unshallow submodule 2024-08-07 02:50:24 +02:00
Exzap 2129644781 Remove shaderCache directory
The location of the shaderCache path is different for non-portable cases so let's not confuse the user by shipping with a precreated directory that isn't actually used
2024-08-06 23:02:28 +02:00
Exzap d81eb952a4 nsyshid: Silence some logging in release builds 2024-08-06 22:58:23 +02:00
Exzap 1575866eca Vulkan: Add R32_X8_FLOAT format 2024-08-04 14:47:51 +02:00
Joshua de ReeperandGitHub 517e68fe57 nsyshid: Tidyups and Fixes (#1275) 2024-07-28 18:50:20 +02:00
SSimco 92f7342fbd Fix typo 2024-07-28 10:23:46 +03:00
SSimco 30a1221067 Refactor code 2024-07-27 22:56:44 +03:00
Exzap 593da5ed79 CI: Workaround for MoltenVK crash
1.2.10 and later crash during descriptor set creation. So for now let's stick with the older version
2024-07-27 18:35:23 +02:00
Exzap c73fa3761c Fix compatibility with GCC 2024-07-27 04:45:36 +02:00
Exzap 5328e9eb10 CPU: Fix overflow bit calculation in SUBFO instruction
Since rD can overlap with rA or rB the result needs to be stored in a temporary
2024-07-26 06:03:00 +02:00
Exzap 47f1dcf996 debugger: Add symbol support to PPC stack traces
Also moved the declaration to precompiled.h instead of redefining it wherever it is used
2024-07-26 06:03:00 +02:00
Exzap 252429933f debugger: Slightly optimize symbol list updates 2024-07-26 06:03:00 +02:00
Exzap 026d547dcc Use HTTP 1.1 in Nintendo API requests 2024-07-26 06:03:00 +02:00
ExzapandGitHub f1685eab66 h264: Use asynchronous decoding when possible (#1257) 2024-07-26 05:48:42 +02:00
ExvergeandGitHub 4b9c7c0d30 Update Fedora build instructions (#1269) 2024-07-24 08:32:40 +02:00
capitalistspzandGitHub e65abf4898 Suppress unnecessary GTK messages (#1267) 2024-07-23 22:18:55 +02:00
Joshua de ReeperandGitHub a1c1a608d7 nsyshid: Emulate Infinity Base (#1246) 2024-07-23 03:18:48 +02:00
ExzapandGitHub 64232ffdbd Windows default to non-portable + Reworked MLC handling and related UI (#1252) 2024-07-23 03:13:36 +02:00
goeiecool9999andGitHub 7522c8470e resource: move fontawesome to .rodata (#1259) 2024-07-19 14:24:46 +02:00
9dbc01db13 Fix typos in fs wrappers
* Fix typos in fs wrappers

---------

Co-authored-by: SSimco <37044560+SSimco@users.noreply.github.com>
2024-07-13 11:16:01 +03:00
SSimco 987cb7799b Refactored common layout & update game item text size 2024-07-09 19:28:02 +03:00
SSimco 3f5d6eda66 Added ci for building the android app 2024-07-09 14:28:50 +03:00
SSimco aae6313fdb Merge branch 'main' into android 2024-07-09 11:23:13 +03:00
SSimco 7e4a0a5264 Cleanup android code 2024-07-08 19:55:38 +03:00
SSimco 7be7cf46d1 Added overlay settings 2024-07-08 19:46:53 +03:00
SSimco bb10cfbf62 Remove pre-rotation work 2024-07-08 19:19:22 +03:00
Exzap 9d366937cd Workaround for compiler issue with Visual Studio 17.10 2024-07-07 08:55:26 +02:00
Joshua de ReeperandGitHub 5209677f2f nsyshid: Add SetProtocol and SetReport support for libusb backend (#1243) 2024-07-02 03:32:37 +02:00
Colin KinlochandGitHub 64b0b85ed5 Create GamePad window at correct size (#1247)
Don't change the size on canvas initialization
2024-06-29 22:31:47 +02:00
Joshua de ReeperandGitHub aefbb918be nsyshid: Skylander emulation fixes and code cleanup (#1244) 2024-06-28 15:44:49 +02:00
Joshua de ReeperandGitHub 93b58ae6f7 nsyshid: Add infrastructure and support for emulating Skylander Portal (#971) 2024-06-28 00:55:20 +02:00
Exzap f3d20832c1 Avoid an unhandled exception when mlc path is invalid 2024-06-25 19:28:21 +02:00
Exzap d4c2c3d209 nsyskbd: Stub KBDGetKey
Fixes MSX VC games freezing on boot
2024-06-25 15:50:06 +02:00
Exzap 1672f969bb Latte: Add support for vertex format used by Rabbids Land 2024-06-09 17:53:34 +02:00
goeiecool9999andGitHub 6772b1993f vcpkg: Update dependencies (#1229) 2024-06-05 16:34:42 +02:00
Exzap 16070458ed Logging: Restructure menu + allow toggeling APIErrors logtype
The logtype "APIErrors" previously was always enabled. This option is intended to help homebrew developers notice mistakes in how they use CafeOS API. But some commercial games trigger these a lot and cause log.txt bloat (e.g. seen in XCX). Thus this commit changes it so that it's off by default and instead can be toggled if desired.

Additionally in this commit:
- COS module logging options are no longer translatable (our debug logging is fundamentally English)
- Restructured the log menu and moved the logging options that are mainly of interest to Cemu devs into a separate submenu
2024-06-02 21:39:40 +02:00
Exzap 5f825a1fa8 Latte: Always allow views with the same format as base texture
Fixes crash/assert in VC N64 titles
2024-06-02 21:39:40 +02:00
Colin KinlochandGitHub d33337d539 Fix GamePad window size (#1224) 2024-05-29 00:36:12 +02:00
Exzap f576269ed0 Refactor legacy method of emulating thread events 2024-05-29 00:34:11 +02:00
Exzap da8fd5b7c7 nn_save: Refactor and modernize code 2024-05-29 00:07:37 +02:00
SSimco bab67d7df0 Use tick effect 2024-05-28 09:32:38 +03:00
Exzap 1ee9d5c78c coreinit: Tweak JD2019 workaround to avoid XCX softlock 2024-05-27 01:24:24 +02:00
SSimco e05d07b426 Update games fragment design 2024-05-26 18:25:36 +03:00
SSimco b50880e7d4 Added thread fences to FiberBoost & fixed x64 build 2024-05-26 17:52:14 +03:00
SSimco f1dec91ae1 Added input overlay 2024-05-26 17:51:32 +03:00
SSimco 8a4b99b3e1 Updated gradle build 2024-05-26 17:50:03 +03:00
SSimco fb03e66041 fix for recompiler/interperter crash on arm 2024-05-25 07:07:33 +03:00
goeiecool9999andGitHub aadd2f4a1a Input: Assign profile name correctly on save (#1217) 2024-05-25 01:48:53 +02:00
qurious-pixelandGitHub 149fe10a4e CI+MacOS: Use libusb dylib from vcpkg (#1219) 2024-05-25 01:48:17 +02:00
Cemu-Language CI 917ea2ef23 Update translation files 2024-05-23 17:48:04 +00:00
Exzap b048a1fd9e Use CURLOPT_USERAGENT instead of manually setting User-Agent 2024-05-22 05:08:03 +02:00
ExzapandGitHub a059338890 Add initial NTAG and NFC implementation 2024-05-22 04:45:10 +02:00
goeiecool9999andGitHub 523a1652df OpenGL: Restore ProgramBinary cache for GL shaders (#1209) 2024-05-22 04:23:33 +02:00
goeiecool9999andGitHub c913a59c7a TitleList: Add homebrew title type (#1203) 2024-05-22 04:11:02 +02:00
GaryOderNichts 964d2acb44 Filestream_unix: Include cstdarg 2024-05-18 20:47:09 +02:00
GaryOderNichts a115921b43 Fix inconsistency with int types 2024-05-18 20:37:37 +02:00
GaryOderNichts eb1983daa6 nfc: Remove backup path 2024-05-18 20:37:37 +02:00
GaryOderNichts 8fe69cd0fb Properly implement NFC result codes 2024-05-18 20:37:37 +02:00
GaryOderNichts 41fe598e33 nfc: Implement UID filter 2024-05-18 20:37:37 +02:00
GaryOderNichts 8e8431113a ntag: Implement NTAGWrite 2024-05-18 20:37:37 +02:00
GaryOderNichts 1c6b209692 Add initial ntag and nfc implementation 2024-05-18 20:37:37 +02:00
GaryOderNichts 84e78088fb PPCCoreCallback: Add support for stack args if GPR limit is reached 2024-05-18 20:37:37 +02:00
splatoon1enjoyerandGitHub 13b90874f9 Fix commas edge case in strings when parsing an assembly line (#1201) 2024-05-13 16:52:25 +02:00
ExzapandGitHub cf41c3b136 CI: Use submodule commit of vcpkg 2024-05-10 09:33:32 +02:00
XphalnosandGitHub 97d8cf4ba3 vcpkg: Update libraries (#1198) 2024-05-10 09:32:06 +02:00
GaryOderNichtsandGitHub b2a6cccc89 nn_act: Implement GetTransferableId (#1197) 2024-05-09 12:12:34 +02:00
GaryOderNichtsandGitHub 10d553e1c9 zlib125: Implement deflateInit_ (#1194) 2024-05-07 11:56:28 +02:00
Exzap 3f8722f0a6 Track online-enable and network-service settings per-account instead of globally 2024-05-06 18:18:42 +02:00
Exzap 065fb7eb58 coreinit: Add reschedule special case to avoid a deadlock
Fixes Just Dance 2019 locking up on boot
2024-05-06 09:15:36 +02:00
capitalistspzandGitHub 7d6d417354 Input: Improve setting of dpd_enable_fg (#1127) 2024-05-06 03:27:30 +02:00
Exzap bd13d4bdc3 nn_act: Make AcquireToken gracefully fail in offline mode + refactor 2024-05-05 17:05:11 +02:00
Exzap bf37a8281e CI: Update action versions 2024-05-05 14:06:26 +02:00
Exzap dd3ed56509 nn_save: Fix inverted condition preventing accessing other title's saves 2024-05-05 10:05:35 +02:00
Exzap 70afe3a033 nlibcurl: Use separte logging type 2024-05-05 09:11:08 +02:00
goeiecool9999andGitHub dc480ac00b Add support for WUHB file format (#1190) 2024-05-05 02:35:01 +02:00
qurious-pixelandGitHub f28043e0e9 Linux/Mac Auto-Updater (#1145) 2024-05-05 01:34:36 +02:00
Exzap a744670486 coreinit: Add export for OSGetForegroundBucketFreeArea 2024-05-05 01:33:15 +02:00
Exzap 48d2a8371b sndcore: Write log message instead of asserting in AXSetDeviceRemixMatrix
Fixes a crash in Watch Dogs due to the non-debug assert
2024-05-05 01:33:15 +02:00
Exzap 91a010fbdd proc_ui: Fix crash due to incorrect version handling
Resolves a crash in NEX Remix
2024-05-04 08:05:10 +02:00
Exzap a16c37f0c5 coreinit: Rework thread creation
New implementation is much closer to console behavior. For example we didn't align the stack which would cause crashes in the Miiverse applet
2024-05-04 07:05:59 +02:00
Exzap 041f29a914 nn_act: Implement GetTimeZoneId placeholder 2024-05-03 02:44:10 +02:00
Exzap 1b5c885621 nn_acp: Implement ACPGetTitleMetaXml 2024-05-03 02:41:39 +02:00
Exzap c11d83e9d8 coreinit: Implement MCP_GetTitleId 2024-05-03 02:41:05 +02:00
Exzap 379950d185 coreinit+nn_save: Cleanup some legacy code 2024-05-01 05:06:50 +02:00
Exzap e7c6862e19 DownloadManager: Fix missing updates 2024-05-01 01:55:55 +02:00
Exzap 1c73dc9e1b Implement proc_ui.rpl + stub SYSSwitchToEManual() to avoid softlocks
- Full reimplementation of proc_ui.rpl with all 19 exports
- Foreground/Background messages now go to the coreinit system message queue as they should (instead of using a hack where proc_ui receives them directly)
- Add missing coreinit API needed by proc_ui: OSGetPFID(), OSGetUPID(), OSGetTitleID(), __OSCreateThreadType()
- Use big-endian types in OSMessage
- Flesh out the stubs for OSDriver_Register and OSDriver_Unregister a bit more since we need to call it from proc_ui. Similiar small tweaks to other coreinit API
- Stub sysapp SYSSwitchToEManual() and _SYSSwitchToEManual() in such a way that they will trigger the expected background/foreground transition, avoiding softlocks in games that call these functions
2024-04-30 23:29:15 +02:00
Exzap c038e758ae IOSU: Clean up resource on service shutdown
Also set device-dependent thread name
2024-04-30 23:19:11 +02:00
Exzap b2be3c13df Add example network_services.xml 2024-04-30 23:19:04 +02:00
GaryOderNichtsandGitHub fdf239929f nsysnet: Various improvements (#1188)
- Do not raise an assert for unimplemented optnames
- recvfrom: src_addr and addrlen can be NULL
- getsockopt: Implement SO_TYPE
2024-04-29 00:24:43 +02:00
goeiecool9999andGitHub 5be98da0ac OpenGL: Fix a crash when GL_VERSION is null (#1187) 2024-04-27 15:49:49 +02:00
Exzap efbbb817fe DownloadManager: Always use Nintendo servers + additional streamlining
- Download manager now always uses Nintendo servers. Requires only a valid OTP and SEEPROM dump so you can use it in combination with a Pretendo setup even without a NNID
- Account drop down removed from download manager since it's not required
- Internally all our API requests now support overriding which service to use
- Drop support for act-url and ecs-url command line parameters. Usage of network_services.xml ("custom" option in the UI) is preferred
2024-04-20 12:19:06 +02:00
Exzap 989e2b8c8c prudp: More code cleanup + fix compile error 2024-04-18 23:11:39 +02:00
Exzap e2f9725719 prudp: Code cleanup 2024-04-18 19:23:00 +02:00
Exzap ee36992bd6 prudp: Improve ping and ack logic
Fixes the issue where the friend service connection would always timeout on Pretendo servers

The individual changes are:
- Outgoing ping packets now use their own incrementing sequenceId (matches official NEX behavior)
- If the server sends us a ping packet with NEEDS_ACK, we now respond
- Misc smaller refactoring and code clean up
- Added PRUDP as a separate logging option
2024-04-18 19:23:00 +02:00
goeiecool9999andGitHub 10c78eccce CI: don't strip debug symbols from binary in AppImage (#1175) 2024-04-15 05:20:39 +02:00
Exzap 6ea42d958c nlibcurl: Fix compile error 2024-04-13 11:03:02 +02:00
Exzap 9c28a728e4 prudp: Dont expect sessionId to match for PING+ACK
Fixes friend service connection periodically timing-out on Pretendo.

Seems that unlike Nintendo's servers, Pretendo doesn't set sessionId for PING ack packets.
2024-04-13 10:43:21 +02:00
Exzap d5a8530246 nlibcurl: Detect invalid header combo + refactoring
Fixes error 106-0526 when opening course world on Super Mario Maker

Manually attaching Content-Length header for POST requests is undefined behavior on recent libcurl.
To detect the bad case some refactoring was necessary. In general we should try to move away from directly forwarding curl_easy_setopt() to the underlying instance as the behavior is diverging in modern libcurl. Much more refactoring work is required in the future to fix all of this.
2024-04-13 10:43:21 +02:00
goeiecool9999andGitHub 84cad8b280 Vulkan: Remove unecessary present fence (#1166) 2024-04-11 06:41:57 +02:00
qurious-pixelandGitHub 391533dbe5 Gamelist: Enable icon column by default (#1168) 2024-04-11 06:08:26 +02:00
goeiecool9999andGitHub bac1ac3b49 CI: use last vcpkg compatible CMake 3.29.0 (#1167) 2024-04-11 03:06:36 +02:00
Exzap d45c2fa6d1 erreula: Avoid triggering debug assert in imgui
It does not like empty window titles
2024-04-10 20:23:15 +02:00
Exzap 12eda10387 nn_acp: Implement ACPGetOlvAccesskey + code clean up
Added ACPGetOlvAccesskey() which is used by Super Mario Maker

iosu acp, nn_acp and nn_save all cross talk with each other and are mostly legacy code. Modernized it a tiny bit and moved functions to where they should be. A larger refactor should be done in the future but for now this works ok
2024-04-10 20:22:27 +02:00
SSimco 9760bafb8a Fix crash in graphic packs fragment 2024-04-09 08:13:09 +03:00
47463915andGitHub 33a74c2035 nn_nfp: Avoid current app from showing up as "???" for others in Friend List + View friends' status (#1157) 2024-04-09 00:33:50 +02:00
MaschellandGitHub 7b635e7eb8 nn_boss: Implement startIndex parameter usage in nn:boss:::GetDataList (#1162) 2024-04-08 19:51:30 +02:00
MaschellandGitHub 9b30be0258 drmapp: Stub more functions to allow title loading from Wii U Menu (#1161) 2024-04-08 19:50:57 +02:00
MaschellandGitHub efbf712305 nn_sl: Stub GetDefaultWhiteListAccessor__Q2_2nn2slFv to avoid crash in Wii U Menu when an online account is used (#1159) 2024-04-08 19:15:49 +02:00
SSimco b4c70f09d5 Apply clang-format to all c++ android files 2024-04-07 23:39:35 +03:00
SSimco 3c916747af Added graphic packs settings 2024-04-07 23:33:49 +03:00
Exzap 74e8d205b0 coreinit: Handle SD mounting permission in FSGetMountSource
One Piece requires this to not get stuck in an infinite loop on boot.

This also sets up initial infrastructure for handling cos.xml permissions
2024-04-06 22:18:38 +02:00
Exzap fde7230191 vcpkg/windows/mac: Avoid dependency on liblzma via tiff 2024-04-06 22:18:38 +02:00
goeiecool9999andGitHub 075eac626b ELF: Fix crash due to not allocating recompiler ranges (#1154) 2024-04-06 22:13:19 +02:00
Exzap 85141f17f9 vcpkg/linux: Avoid dependency on libsystemd/liblzma
libsystemd which is required by dbus has an optional dependency on liblzma and since we don't need it we can just strip it out of dbus
2024-04-03 15:40:38 +02:00
Exzap 5c0d5a54ac vcpkg/linux: Avoid dependency on liblzma for now
Use port of tiff which does not rely on lzma
2024-04-03 02:40:41 +02:00
Exzap 51072b510c nn_boss: Large rework with various improvements
Lots of internal changes. On the surface this only fixes a crash in Mario & Sonic Rio 2016 (at least what I saw from my testing) but it may affect more games.

Summary of changes:
- Rewrite code to use newer cafeExportRegisterFunc
- Simplify code by merging namespaces and structs of the same types
- Correctly set ppc vtables for the virtual boss classes
- Fix some wrong function definitions and implement a little bit more of the boss API (mainly constructors and destructors)
2024-04-03 01:56:49 +02:00
Exzap 3e467e220e Logging: Prevent crash for nullptr strings 2024-04-03 01:56:49 +02:00
Exzap fa8bab2f39 Latte: Add support for LOOP_START_NO_AL shader instruction
This instruction is used by Injustice: Gods Among Us and Project Zero

Also improved robustness of rendering to be less prone to crashing when a game tries to draw with broken shaders
2024-04-03 01:56:49 +02:00
Exzap 60adc38205 Latte: Add support for more fence conditions
MEM_OP_GREATER is required by Injustice: Gods Among Us
2024-04-03 01:56:49 +02:00
Exzap b0b2c25762 coreinit: Improve accuracy of OSSwitchCoroutine
Fixes Injustice: Gods Among Us crashing during boot.
2024-04-03 01:56:48 +02:00
goeiecool9999andGitHub 5230fcab37 Debugger: Fix infinite loop in symbol storage (#1134) 2024-03-27 11:14:01 +01:00
goeiecool9999andGitHub 4f3d4624f5 GraphicPacksWindow: Disable update button when a game is running (#1137) 2024-03-26 13:09:24 +01:00
goeiecool9999andGitHub 111e383d1b coreinit: Fix race condition that causes crash (#1138) 2024-03-26 13:07:08 +01:00
SSimcoandGitHub fa4ad9b8c1 Gamelist: Add option to hide the icon column (#604) 2024-03-25 22:30:39 +01:00
Exzap 4b7d2f88ae Latte: Enable colorbuffer optimization if gfx packs are aware
The optimization for colorbuffer resolution introduced in PR #706 is now enabled. This optimization changes the resolution of certain framebuffer textures, which may conflict with the texture resolution rules set by some graphic packs. As a result, if a graphic pack that specifies texture resolution rules is in use, the optimization will automatically be turned off to prevent any issues.

To circumvent this, graphic packs can now include the setting "colorbufferOptimizationAware = true" in their rules.txt. This setting indicates that the pack has been updated to handle the resolution changes introduced by the optimization. Cemu will allow the optimization to remain enabled if resolution packs have this flag set.
2024-03-25 21:35:38 +01:00
Francesco SaltoriandGitHub 4d148b3696 Add supported locales to macOS plist (#1133) 2024-03-25 21:34:40 +01:00
capitalistspzandGitHub 241915e1a6 Gamelist: Display title long names + improvements for shortcuts (#1126)
- Windows icons are stored as .ico files to %LOCALAPPDATA%/Cemu/icons/
- Long title names chosen as some games (NSMBU + NSLU) add trailing dots for their shortnames
- Long title names have their newlines replaced with spaces at parsing
- Linux shortcut paths are saved with UTF-8 encoding
- Game titles are copied and saved with UTF-8 encoding
2024-03-24 11:11:18 +01:00
goeiecool9999andGitHub 17060752b6 Vulkan: Several swapchain fixes and refactors (#1132) 2024-03-24 10:57:08 +01:00
goeiecool9999andGitHub 4d609f06b8 InputSettings: Fix controller type counter to restore WPAD limit (#1118) 2024-03-20 10:22:48 +01:00
goeiecool9999andGitHub 42d14eec96 Minor code improvements (#1124) 2024-03-18 09:18:02 +01:00
goeiecool9999andGitHub eaa82817dd Update thread names (#1120) 2024-03-15 23:06:48 +01:00
Exzap 731713de3a OpenGL: Remove "-legacy" flag
"Intel legacy mode" was a special mode to workaround various Intel OpenGL driver limitations during the earlier years of Cemu. It's been unmaintained for years and no longer serves a purpose.

If we ever bring back compatibility with ancient Intel GPUs it should be done in a more structured way than a blunt yes/no flag.
2024-03-14 03:11:04 +01:00
Exzap 193767e6cc Latte+Vulkan: Code cleanup
Besides a general cleanup:
- Remove deprecated resource destruction queues
- Move functionality from renderer into Latte base classes to deduplicate code
2024-03-14 01:10:52 +01:00
Exzap bc04662525 Latte+GL+VK: Improve handling of gfx pack texture overwrite format
Graphic packs can overwrite the format of a texture (e.g. for higher bitdepth to lessen banding) but the code for this wasn't correctly working anymore.

- Fixes overwrite format being ignored for texture views on Vulkan backend
- Fixes overwrite format not being used for texture views on OpenGL

Format aliasing is complicated enough as it is, even without overwrites, so this adds a new rule to make behavior more well defined: If two textures share memory but only one uses an overwrite format, then they are no longer synchronized and are considered separate textures.

Bonus fixes for OpenGL:
- Use fbo 0 instead of -1 as the default. This silences some warnings in debug output
- On OpenGL, bind new framebuffers on handle generation so they are considered created
2024-03-13 02:41:42 +01:00
Exzap 8bc444bb97 Latte: Derive framebuffer size from correct mip of depth buffer 2024-03-12 16:16:52 +01:00
Exzap 6fa77feba3 Latte: Fix regression in dd7cb74 2024-03-12 05:53:31 +01:00
Exzap 224866c3d2 CI: Work around a vcpkg issue by checking out an earlier commit 2024-03-12 01:43:52 +01:00
Exzap a50e25300d Vulkan: Remove unused code path for texture copies
In 2020 we switched to drawcalls for texture copies replacing the copy-via-buffer path. It's not been used since so lets remove it
2024-03-11 23:01:37 +01:00
Exzap 1f9b89116f Vulkan: Fix crash during shutdown if shaders are still compiling
Make sure the async shader compiler threads are stopped before the shaders are deleted
2024-03-11 21:57:37 +01:00
Exzap 40d1eaeb72 nn_ac: Refactor and implement more API
Doesn't fix any issue as far as I know but it removes some of the unsupported API complaints in debug logging
2024-03-11 21:57:37 +01:00
Exzap dd7cb74cd2 Latte: Small refactor and clean up for texture size code 2024-03-11 21:57:37 +01:00
Exzap 0993658c82 GX2: Rework GX2Set*UniformReg
- Use cafeExportRegister() instead of legacy export
- Submit as a single PM4 packet
- Add logging for the special case of the size parameter (not sure if this is used by any game?)
- Add some extra validation and logging which may be helpful to homebrew devs
2024-03-11 21:57:37 +01:00
Exzap 3d0d987d89 Logging: Introduce logOnce helper
For cases where printing a message once is enough and to avoid spamming log.txt
2024-03-11 21:57:37 +01:00
goeiecool9999andGitHub bb88b5c36d Fix crash introduced by #1115 (#1117)
* Revert "CafeSystem: Init recompiler after game profile has been loaded (#1115)"
* Instead move gameprofile load call
2024-03-11 02:40:47 +01:00
goeiecool9999andGitHub ccabd93159 Linux: Exit on SIGTERM (#1116) 2024-03-11 02:13:53 +01:00
goeiecool9999andGitHub 788da3cdf7 CafeSystem: Init recompiler after game profile has been loaded (#1115) 2024-03-11 01:47:31 +01:00
goeiecool9999andGitHub e1435066ee OpenGL: Fix crash related to wxWidgets handling of vsync (#1112) 2024-03-11 00:57:31 +01:00
goeiecool9999andGitHub a2d74972d4 Prevent changing of console language while a game is running (#1114) 2024-03-11 00:55:31 +01:00
goeiecool9999andGitHub f69fddc6e5 TitleManager: Fix crash when sorting by format (#1113) 2024-03-10 23:25:16 +01:00
Exzap d9e8ca2c83 Revert "Vulkan: Update some code to use VK_KHR_synchronization2"
This reverts commit 8f1cd4f925.

We received reports from users stuck with Vulkan drivers from 2019. (E.g. Kepler on Windows). So let's not unnecessarily increase the Vulkan requirement for now and postpone this to after the next stable release
2024-03-09 02:38:08 +01:00
Exzap b390023bc5 README.md: Fix minor ambiguity 2024-03-08 14:48:59 +01:00
Exzap ea68f787eb Vulkan: For MSAA surface copies make the target MSAA too
Fixes #1108
2024-03-08 14:45:02 +01:00
Exzap 9f9bc9865f Vulkan: Avoid calling vkCmdClearColorImage() on compressed textures
This is not allowed according to the spec and can crash drivers. Fixes #1100
2024-03-08 14:43:40 +01:00
Exzap b8d81283e8 Vulkan: Remove unnecessary index buffer for backbuffer drawcall 2024-03-08 14:39:46 +01:00
Exzap 8f1cd4f925 Vulkan: Update some code to use VK_KHR_synchronization2 2024-03-08 14:39:46 +01:00
SimonandGitHub 49c55a3f56 nsyshid: remove stray print statements (#1106) 2024-03-06 14:37:36 +01:00
Leif LiddyandGitHub 8b37e316d0 BUILD.md: Add llvm package for Fedora (#1101) 2024-02-24 20:47:06 +01:00
SSimco 275a46f97f Replace x86 intrinsics with sse2neon on arm64 & refactor code 2024-02-21 20:31:10 +02:00
Exzap a63678c1f4 Update SDL2 vcpkg port to 2.30.0 2024-02-20 11:10:35 +01:00
Exzap 72ce4838ea Latte: Optimize uniform register array size for known shaders 2024-02-20 10:57:05 +01:00
Exzap 96bbd3bd25 Latte: Avoid assert in texture view check 2024-02-20 10:57:05 +01:00
MoonlightWave-12andGitHub 3a02490a1f BUILD.md: Mention Debian in the build-instructions for Ubuntu (#1096) 2024-02-18 17:12:09 +01:00
rawdatafeelandGitHub 8d7fc98275 Improve BUILD.md (#1093) 2024-02-18 05:59:00 +01:00
capitalistspzandGitHub ed01eaf5f9 Gamelist: Add right-click actions for copying title ID, name, and icon (#1089) 2024-02-18 05:56:36 +01:00
Steveice10andGitHub 9bbb7c8b97 Add support for portable directory without build flag (#1071) 2024-02-18 05:54:41 +01:00
Squall LeonhartandGitHub 6a08d04af9 UI: Make Alt+F4/Ctrl+Q more reliable (#1035) 2024-02-18 05:52:11 +01:00
Squall LeonhartandGitHub 81acd80a97 Cubeb: Add a default device to the selection (#1017) 2024-02-18 05:51:00 +01:00
SSimco 610cced493 Recompiler fix 2024-02-16 22:50:07 +02:00
SSimco 36157ae5e7 Fix crash in input fragments 2024-02-16 22:49:11 +02:00
SSimco 00a5c44464 Merge branch 'android-2' into android-jit 2024-02-16 22:40:30 +02:00
SSimco f5cf6b7ca6 Updated ndkVersion & build without HIDAPI on android 2024-01-20 22:59:52 +02:00
SSimco 47f4c6b79e Added debug build type appIdsuffix 2024-01-20 21:47:42 +02:00
SSimco 748070bc12 Revert "Added libucontext for android & replaced x86 intrinsics with sse2neon implementations"
This reverts commit 8e666d32d0.
2024-01-20 21:44:37 +02:00
SSimco 179bf2c145 Merge branch 'main' into android-2 2024-01-20 21:41:24 +02:00
Exzap ca01e923bf Update issue templates 2024-01-20 00:33:39 +01:00
Exzap 4e4ac0de51 CI: For the Windows build use as many cores as available 2024-01-19 23:32:43 +01:00
capitalistspzandExzap 18679af4ec Ignore Wii U pro controller 2024-01-19 16:25:04 +01:00
Mike LothianandExzap 72aacbdcec Vulkan: Don't use glslang internal headers
Signed-off-by: Mike Lothian <mike@fireburn.co.uk>
2024-01-19 04:58:08 +01:00
Colin KinlochandExzap e53c63b828 Flatpak: Create shortcuts that launch flatpak 2024-01-17 02:49:58 +01:00
Colin KinlochandExzap f899ab7c34 Vulkan: Check for 0 size before wayland resize
Fixes "Launching games directly with the --title-id argument doesn't work
in Wayland" (#999)
2024-01-17 02:18:29 +01:00
Live session userandExzap 7e778042ee Fix macos missing dylib file 2024-01-16 14:51:12 +01:00
Exzap f58b260cbd Fix macos missing dylib file 2024-01-15 16:32:04 +01:00
Exzap f39a5e757b Add "Open MLC folder" option
Also updated Patron supporter list
2024-01-15 15:15:00 +01:00
Exzap 9b0a1d53dc Latte: Fix syntax error in generated GLSL 2024-01-14 23:40:29 +01:00
Exzap 223833cac4 Update libraries 2024-01-13 22:36:04 +01:00
SSimco 8e666d32d0 Added libucontext for android & replaced x86 intrinsics with sse2neon implementations 2023-12-27 16:14:44 +02:00
GaryOderNichtsandGitHub 4405116324 GDBStub: Support watchpoints on linux (#1030)
* GDBStub: Support watchpoints on linux
* GDBStub: Use `TCP_NODELAY`
2023-12-23 15:25:01 -08:00
SSimco 47091d836b Fixed build 2023-12-23 22:44:10 +02:00
SSimco fda05a5a00 Merge branch 'android' into android-2 2023-12-23 18:00:09 +02:00
Exzap bab1616565 nsysnet: Add support for SO_BIO and handle SO_ENOTCONN 2023-12-13 22:43:51 +01:00
Exzap d2ba4e65c5 Latte: 1D views are compatible with 1D textures 2023-12-13 18:10:10 +01:00
Exzap 2167143c17 Latte: Support for SAMPLE_LB 2023-12-13 12:45:20 +01:00
Exzap df282ab230 Latte: Clean up OpenGL relics in shared render code 2023-12-13 12:45:20 +01:00
Exzap 646835346c Latte: Refactor legacy OpenGL code for shader binding 2023-12-13 12:45:20 +01:00
Exzap dee764473d Latte: Small refactor for GLSL texture coord handling
Also adds support for 2D textures coordinates with source as 0.0 or 1.0 literals instead of GPRs. Seen in shaders generated by CafeGLSL
2023-12-10 08:30:52 +01:00
Exzap e7fa8ec0c6 Vulkan: Properly shut down compilation threads 2023-12-10 08:30:52 +01:00
Exzap bffeb818d1 GfxPack: Refactor + better unicode support 2023-12-10 08:30:52 +01:00
Exzap 67f7ce815c nn_pdm: Refactor code to use new module structure 2023-12-10 08:30:52 +01:00
Exzap 9398c0ca6b Latte: Simplify and fix texture copy 2023-12-10 08:30:52 +01:00
shinra-electricandGitHub f6bb666abf Mac: Add wua filetype to info.plist (#1039) 2023-12-10 08:30:08 +01:00
qurious-pixelandGitHub b6aaf66330 [AppImage] Bundle libstdc++ (#1038) 2023-12-07 02:07:50 +01:00
capitalistspzandGitHub 1849083073 Use hidapi for Wiimotes on Windows (#1033) 2023-12-06 02:33:29 +01:00
shinra-electricandGitHub 09409a5108 Set macOS min version to 12.0 Monterey (#1025) 2023-11-27 12:24:26 +01:00
GaryOderNichtsandGitHub 5047c4d083 GDBStub: Fix checkSum string to int conversion (#1029) 2023-11-27 12:21:52 +01:00
SSimco 036551aab7 Fix crash in input settings fragment 2023-10-25 09:49:59 +03:00
SSimco 80543ba2c6 Fix build 2023-10-23 01:10:11 +03:00
SSimco 99e908c708 WIP jit 2023-10-22 18:39:07 +03:00
Exzap f3c95f72e7 nn_fp: Multiple fixes 2023-10-19 05:55:52 +02:00
Exzap b0a7fd4e07 Set default alignment for SysAllocator to cache-line size
Avoids memory corruptions when the memory is cleared via DCZeroRange. Seen in BotW with AX AUX buffers.
2023-10-18 10:49:59 +02:00
Exzap 9bb409314d coreinit: Fix potential race condition in IPC code 2023-10-18 10:43:36 +02:00
bslhqandGitHub 9ec50b865d Fix nfc menu list of recent nfc files (#996) 2023-10-17 14:45:55 +02:00
Exzap 63861bf812 Fix SpotPass downloads on Linux/MacOS 2023-10-17 13:07:43 +02:00
Exzap 66711529be Avoid wxGetKeyState since it asserts on Linux with wayland GTK
Only modifier keys are allowed, but we used it to test for Escape
2023-10-17 13:06:45 +02:00
Exzap c440ecdf36 FPD: Fix a crash due to incorrect instantiation 2023-10-17 06:16:29 +02:00
Exzap 2959802ae2 Use utf-8 for exe path 2023-10-17 05:26:30 +02:00
Exzap 0d71885c88 nn_fp: Full rework of friend service 2023-10-17 05:26:30 +02:00
Francesco SaltoriandGitHub 13a50a915e Fix several language selection issues (#994) 2023-10-16 13:41:06 +02:00
goeiecool9999andGitHub d4a2a8e8de Vulkan: Cleanup image barrier code (#988) 2023-10-16 07:33:12 +02:00
Cemu-Language CI db44a2d130 Update translation files 2023-10-04 21:39:01 +00:00
Exzap db53f3b980 Fixes for titles in NUS format
Symlinks were not handled correctly
2023-10-02 21:24:50 +02:00
Exzap 29c823fa1f Latte: Fix uniform size limit being too low 2023-10-02 19:05:44 +02:00
Exzap 757d458161 Compatibility with fmtlib 10.1.x 2023-10-02 18:53:00 +02:00
Exzap ff9d180154 Code cleanup 2023-10-01 11:46:26 +02:00
Exzap 9523993a24 Fix file menu list of recent games 2023-10-01 11:46:26 +02:00
Francesco SaltoriandGitHub 5b27d32cb7 Minor localization adjustments (#984) 2023-09-30 15:27:56 +02:00
Exzap 43976ca7eb Prioritize non-NUS format over NUS
If a title exists multiple times in the game folder in different formats, then prefer and use non-NUS format if one is available. This is so we match previous Cemu behavior where Cemu would pick non-NUS simply due the fact that NUS format wasn't supported yet.
2023-09-30 06:21:14 +02:00
Exzap ce34b95b82 Fix game path not respecting utf8 encoding 2023-09-30 03:07:49 +02:00
ExzapandGitHub 8bb7ce098c Bump CI clang version to 15 + workaround for unsafe fiber optimizations (#982) 2023-09-29 17:17:28 +02:00
Exzap 8a4abb8bbb Update Windows build instructions 2023-09-29 06:48:10 +02:00
Exzap 6217276681 Enable DPI awareness on Windows 2023-09-29 06:48:10 +02:00
Exzap 21c1f84a87 Fix WUA conversion not detecting updates 2023-09-29 06:48:10 +02:00
Exzap abce406ee8 Refactor more wstring instances to utf8-encoded string 2023-09-29 06:48:10 +02:00
Exzap f6c3c96d94 More detailed error messages when encrypted titles fail to launch 2023-09-29 06:48:10 +02:00
Exzap 5ad57bb0c9 Add support for games in NUS format (.app)
Requires title.tmd and title.tik in same directory
2023-09-29 06:48:10 +02:00
Exzap f9f6206929 Vulkan: Add profiler for Vulkan API CPU cost
Disabled by default. Set VULKAN_API_CPU_BENCHMARK to 1 to enable
2023-09-29 06:48:10 +02:00
Exzap 3e925b7707 Latte: Bound uniform buffers based on access patterns within the shader 2023-09-29 06:48:10 +02:00
Exzap 4d6b72b353 Latte: Very minor refactor + optimization 2023-09-29 06:48:10 +02:00
Leif LiddyandGitHub 65e5e20afc BUILD.md: Require libtool and libusb1-devel for Fedora (#979) 2023-09-27 00:29:23 +02:00
Squall LeonhartandGitHub 638c4014a1 nn_olv: Handle nullptr key in SetSearchKey (#974) 2023-09-22 19:20:22 +02:00
goeiecool9999andGitHub b4aa10bee4 Vulkan: Only create imgui renderpass once (#972) 2023-09-20 19:01:56 +02:00
Joshua de ReeperandGitHub 1d398551e2 Add DS_Store to gitignore (#969) 2023-09-19 21:43:54 +02:00
ExzapandGitHub 90c56b7731 Latte: Optimizations and tweaks (#706) 2023-09-19 21:17:21 +02:00
capitalistspzandGitHub 323bdfa183 More changes to finding wiimotes (#961) 2023-09-19 17:54:38 +02:00
SimonandGitHub 98b5a8758a nsyshid: Add backends for cross platform USB passthrough support (#950) 2023-09-19 01:27:40 +02:00
Exzap 2a735f1fb7 coreinit: Use native COS locks instead of STL 2023-09-14 20:52:40 +02:00
Exzap 14dd7a72a7 Add coding style guidelines and clang-format file 2023-09-14 20:52:40 +02:00
Exzap 92ab87b049 Latte: Fix shader compilation error when subroutines are used
Fixes character colors in Tekken Tag Tournament 2
2023-09-14 20:52:40 +02:00
Exzap b902aa2048 Logging: Refactor and optimizations 2023-09-14 20:52:40 +02:00
Exzap fda5ec2697 ih264d: Small optimizations and experiments with multi-threading
Using the multi-threaded decoder doesn't seem to be worth it but at least we have a way to enable it now
2023-09-14 20:52:40 +02:00
Exzap f04c7575d7 coreinit: Handle non-existing modules in OSDynLoad_Acquire
Fixes Togabito crashing on boot

coreinit: Handle non-existing modules in OSDynLoad_Acquire
2023-09-14 20:52:40 +02:00
Exzap c168cf536a Vulkan: Dont immediately crash on bad pipeline cache 2023-09-14 20:52:40 +02:00
Exzap 62889adfde Use memory barriers in Linux fiber implementation
Prevent compilers from caching TLS variables across swapcontext calls
2023-09-14 20:52:40 +02:00
Exzap 524188bb7a Refactor more GX2 code to use LatteReg.h 2023-09-14 20:52:40 +02:00
Francesco SaltoriandGitHub 96800c6f97 Additional localization fixes (#966) 2023-09-14 12:47:59 +02:00
Francesco SaltoriandGitHub c66ab0c51a Use native language names in language selector (#964) 2023-09-08 02:09:28 +02:00
Francesco SaltoriandGitHub c16e258c93 Localization improvements and fixes (#956) 2023-09-08 02:09:03 +02:00
Cemu-Language CI 4d1864c8a1 Update translation files 2023-09-07 23:35:58 +00:00
GloriaandGitHub d7f0d67904 Add a pairing utility for Wiimotes to Cemu (#941) 2023-09-06 04:59:50 +02:00
jn64andGitHub 2abf1c2059 Disable auto-update on Linux/macOS (#955)
It's not implemented yet
2023-09-02 05:57:21 +02:00
capitalistspzandGitHub 5e84862e28 [Linux/MacOS] Further Wiimote changes for parity with Windows (#945) 2023-08-31 03:29:12 +02:00
GaryOderNichtsandGitHub d8b9a74d86 Latte: rendertarget is a bitmask (#942) 2023-08-16 23:52:06 +02:00
capitalistspzandGitHub 85aa4f095b Linux/MacOS: Add wiimote support via HIDAPI (#934) 2023-08-15 09:37:37 +02:00
Exzap 892ae13680 Log Windows version + Fix logging crash on Linux 2023-08-13 14:50:38 +02:00
Colin KinlochandGitHub 890df997cb Simplify appstream summary description (#932) 2023-08-08 23:23:18 +02:00
Colin KinlochandGitHub 22bf6420d2 Log platform info (#931) 2023-08-08 23:22:22 +02:00
Exzap a17111e6b0 TitleManager: Improvements for .wua conversion
- Print more detailed paths in confirmation dialogue
- Prefer the title right clicked by the user
- When sourcing titles from other .wua files, use the correct subpath
Fix include path
2023-08-03 20:31:12 +02:00
Exzap 911573e0dd TitleList: Use narrower filter for identifying data titles
Previous code accidentally caught some game updates and dlc titles
2023-08-03 20:31:12 +02:00
Exzap 0f469eb2b9 Small cleanup + Fix memory base logged as 0 2023-08-03 20:31:12 +02:00
Exzap 6268a24a4b Fix crash in title manager 2023-08-03 20:31:12 +02:00
Exzap 0d96255bae nn_olv: More work on post API 2023-08-03 20:31:12 +02:00
Exzap 67819a68d9 nn_act: Handle incorrect slot 0 for PersistentId 2023-08-03 20:31:12 +02:00
CrementifandGitHub 651e5336b4 debugger: Add logging breakpoint + misc fixes (#927) 2023-08-03 15:45:11 +02:00
Colin KinlochandGitHub 1d1e1e781b Vulkan: Retry instance creation if validation layer is not present (#909) 2023-08-03 15:16:22 +02:00
capitalistspzandGitHub 7111cbb103 Quote and escape desktop entry executable path (#917) 2023-08-03 14:54:16 +02:00
SSimco aca4534108 Merge remote-tracking branch 'origin/jit-aarch64' into android-jit 2023-08-02 06:20:24 +03:00
SSimco 3ef1f7cca9 Merge branch 'jit-work' into jit-aarch64 2023-08-01 18:24:28 +03:00
Alexandre BouvierandGitHub 34ff9da097 cmake: exclude fmt10 (#921) 2023-07-31 01:15:44 +02:00
SSimco e3aaa58cc8 Merge branch 'main' into android 2023-07-30 14:52:30 +03:00
SSimco a6f09536c6 Refactor android native code 2023-07-30 14:29:33 +03:00
SSimco e83359b9d8 Remove gui dependency from all projects except CemuBin 2023-07-30 12:07:37 +03:00
SSimco 85deb01568 Move wxGui files to gui & remove AndroidGui 2023-07-29 09:45:40 +03:00
SSimco 67e171c48e Remove guiWrapper from gui project & replace all functions with callbacks 2023-07-29 09:38:31 +03:00
SSimco 7cf80d26e2 Fix wrong check 2023-07-22 20:46:53 +03:00
ExzapandGitHub 2200cc0ddf Initial support for title switching + better Wii U menu compatibility (#907) 2023-07-21 13:54:07 +02:00
capitalistspzandGitHub bfbeeae6f6 Linux: Save icons to user data directory + use real path of AppImage for shortcuts (#894) 2023-07-10 00:53:00 +02:00
f1c200a016 Add '--title-id' parameter and desktop shortcut creation (#889)
* Add '--title-id' launch option to launch titles by title id
* Add title id column to game list
* Add option to create game shortcuts

Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
2023-07-08 01:48:41 +02:00
SSimco fb87aa7261 Add option to search for games 2023-07-06 06:53:56 +03:00
Rambo6GlazandGitHub ea86c77088 Fix UTC offset calculation (#890) 2023-07-05 20:20:01 +02:00
Rambo6GlazandGitHub b0ae008a89 Fix NEX DataStore uploads (nlibcurl) and stub Miiverse PostApp (#888) 2023-07-05 18:59:33 +02:00
SSimco 26f5d8dfab Refactor adapters & add audio, graphics and game folder settings 2023-07-04 20:27:09 +03:00
SSimco ddc29f1206 Replace most adapters with a generic one 2023-07-03 17:35:18 +03:00
SSimco 5da49b59eb Disable DSUControllerProvider on Android 2023-07-03 14:21:19 +03:00
SSimco 14fb7c8a2a Print stacktrace on crashes on Android 2023-07-03 10:44:53 +03:00
SSimco 29841a3fb2 Add support for controller on Android 2023-07-02 22:05:55 +03:00
Exzap 9499870cc9 Debugging: Add minimalist PPC profiler 2023-06-25 08:40:52 +02:00
Exzap 45072fccb2 Remove remnants of frame profiler code 2023-06-25 08:40:52 +02:00
Exzap 4a04fab9c4 coreinit: Set file flag in stat 2023-06-25 08:40:52 +02:00
Rambo6GlazandGitHub a8d157d310 nn_olv: Added community related API (#873)
- Initialize
- Download communities (self-made / favorites / officials)
- Upload communities (create subcommunity)
- Upload favorite status (Add/Delete favorite to a subcommunity)

Enough for support of Mario Kart 8 tournaments
2023-06-24 14:51:41 +02:00
SSimco 8006ec36ef Create TV audio device at the start of the application 2023-06-22 13:18:03 +03:00
Squall LeonhartandGitHub 1beec40445 Fix logging related crash in KPADGetUnifiedWpadStatus (#875) 2023-06-22 04:11:31 +02:00
SSimco 5a4e27e702 Fix crash when calling JNI methods while inside a fiber & add support reading games from folder 2023-06-18 17:21:57 +03:00
ValentinandGitHub cd3fe0685f docs: Fix 404 link in issue template (#868) 2023-06-18 12:16:50 +02:00
SSimco f60abeddcd Add support for reading game files using SAF 2023-06-17 23:19:17 +03:00
Squall LeonhartandGitHub a533c485d9 Remove forced singlecore-recompiler from MK8 game profiles (#865) 2023-06-17 16:48:05 +02:00
MaschellandGitHub fd3b5b7f27 coreinit: Fix FSGetMountSource and FSAppendFile implementation (#863)
Fixes SD access in SSBU
2023-06-17 13:51:55 +02:00
Chris PurnellandGitHub 950e9564e6 Fix register window not updating in PPC debugger (#864) 2023-06-17 13:50:40 +02:00
Chris PurnellandGitHub f0ef8f3cc2 Fix some out of bound array access. (#862) 2023-06-16 20:15:43 +02:00
Chris PurnellandGitHub f6a1cc598e Fix error message when SDL fails to initialize (#861) 2023-06-16 19:57:27 +02:00
Exzap 633e5c0e05 Fix incorrect return values in OSAtomic 2023-06-15 22:36:45 +02:00
Exzap 808d1bb424 Add debug asserts for invalid MEMPTR
Also fixed some corruptions this uncovered
2023-06-15 22:36:35 +02:00
Exzap 7886b594a2 nsysnet: Implement inet_ntop 2023-06-15 22:36:25 +02:00
Exzap 0bead50065 coreinit: Implement support for ".." in paths 2023-06-15 21:23:18 +02:00
MaschellandGitHub f1ebfa9941 coreinit: Implement several FSA functions and fix some bugs (#844) 2023-06-15 21:05:16 +02:00
SSimco 3c8fe805b8 Fix trying to acquire image when the surface is lost 2023-06-15 06:53:59 +03:00
SSimco 479e7c427a Add dialog to confirm exit in emulation activity 2023-06-15 06:53:22 +03:00
SSimco b1fef19a63 Add pre-rotation for Android 2023-06-13 11:25:22 +03:00
SSimco 785a37e503 Add settings, games and emulation activities 2023-06-12 15:49:48 +03:00
SSimco 12e7f9956c Add icon & title loader classes and JNI project 2023-06-11 07:50:44 +03:00
SSimco a03ce9a746 Fix android build 2023-06-10 13:45:15 +03:00
SSimco 05f3444207 Add android project to src 2023-06-08 08:54:05 +03:00
SSimco 6aed5dde46 Make SDL & OpenGL optional and fix build on Android 2023-06-08 08:52:02 +03:00
SSimco be77df52b9 Move wxWidgets gui to wxGui 2023-06-07 12:45:02 +03:00
SSimco e315a7ecb0 Remove wxWidgets dependencies 2023-06-07 11:33:34 +03:00
SSimco c0147f0c2e Move audioDebugger to ui 2023-06-07 10:24:46 +03:00
SSimco 466f03febc Move screenshot logic with wxWidgets to guiWrapper 2023-06-07 10:23:13 +03:00
SSimco 8b265a9843 Move logic for getting button name for keyboard keys to guiWrapper 2023-06-07 09:15:46 +03:00
SSimco 8193ebf7d4 Remove wxMessageBoxes from non-gui code 2023-06-07 09:11:53 +03:00
Colin KinlochandGitHub ae4cb45cf3 Check wx dialogs aren't returning blank paths (#845) 2023-06-06 14:17:41 +02:00
MaschellandGitHub 6073ab3ec6 coreinit: Refactor FS functions to be more accurate (#842) 2023-06-04 11:13:45 +02:00
Colin KinlochandGitHub 4ae5b4f8b8 Wayland: Use viewporter (#836) 2023-05-28 02:04:24 +02:00
CrementifandGitHub d903b2cf12 Remove deprecated logging system and expose developer logging window (#825) 2023-05-20 02:46:12 +02:00
AlexanderandGitHub b8dec03cb5 Add missing template arguments for std::forward (#819) 2023-05-15 18:31:53 +02:00
ExzapandGitHub eda4cf4b24 Fix UI crash on Windows (#813) 2023-05-11 15:27:45 +02:00
Cemu-Language CI dba724c4a0 Update translation files 2023-05-11 06:58:20 +00:00
Cemu-Language CIandExzap 5530e5c613 Revert "Update translation files"
This reverts commit 5c1c05adde.
2023-05-11 08:56:02 +02:00
Cemu-Language CI 5c1c05adde Update translation files 2023-05-11 06:35:06 +00:00
Nicholas FandGitHub 1bcdb35e42 Add GameMode support for Linux build (#796) 2023-05-11 07:19:44 +02:00
Jonathan BarrowandGitHub b74ae21953 Resolve domains to IPs in Friends NEX (#807) 2023-05-10 11:51:54 +02:00
goeiecool9999andGitHub d56bc807cf GraphicsPackWindow2: Use UTF8 (#802) 2023-04-26 15:41:23 +02:00
why-keithandGitHub 1f16e999c5 Migrate missing forceLog_printf statement to new logging (#800) 2023-04-25 18:15:37 +02:00
why-keithandGitHub e58a84629f Migrate coreinitMemLog_printf to new logging (#799) 2023-04-25 18:09:00 +02:00
caa57a3cfd Logging migration (forceLogDebug_printf) (#780)
* script changes - no arguments

* script changes with 2 arguments

* script changes with > 2 arguments

* script conversions with 1 argument - pt. 1

* script conversions with 1 argument - pt. 2

* script conversions with 1 argument - pt. 3

* script conversions with 1 argument - pt. 4

* script conversions with 1 argument - pt. 5

Pointer format hunting

* Fixed pointer format

* script conversions with 1 argument - final

* fixed conversion in non utf-8 file

* fixed conversion with capital letter

* actually fixed conversion with capital letter

* fixed another capital lettering issue

* Added conversions with LR removed

* removed LR from logs

* Converted logs that previously contained LR

* converted log that originally specified string length

* fixed log with commas in main text

* fixed multi-line log

* Fixed more logs with commas in main text

* Fixed unformatted pointer

* added conversion with float value

* converted lines with double parameters

* converted missed line

* corrected argument formatting

Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>

* Fixed misspellings of "unhandled"

unhandeled -> unhandled

Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>

---------

Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
2023-04-25 08:43:31 +02:00
Exzap f48ad6a1ca Dont format logging calls with only the format string 2023-04-20 14:37:11 +02:00
Exzap c209feeaaa Use system cairo instead of vcpkg port 2023-04-19 19:02:58 +02:00
Exzap e3e167b8ba vcpkg: Use system GTK3 2023-04-17 16:20:28 +02:00
Exzap 41f2c27229 Remove dependency on boost::dll and boost::range 2023-04-16 11:51:25 +02:00
why-keithandGitHub 80953fe603 Migrate saveLog_printf to new logging (#768) 2023-04-16 00:31:53 +02:00
why-keithandGitHub 27a5671056 Migrate inputLog_printf to new logging (#767) 2023-04-16 00:18:11 +02:00
why-keithandGitHub a519b01b58 Migrate socketLog_printf to new logging (#766) 2023-04-16 00:08:22 +02:00
why-keithandGitHub 9c6e3fb144 Migrate nfpLog_printf to new logging (#769) 2023-04-15 15:19:00 +02:00
ExzapandGitHub a6e9481b64 Use vcpkg GTK3 with enabled wayland (#772) 2023-04-15 12:21:08 +02:00
Exzap ecb7b77326 Latte: Use better hashing algorithm for cache invalidation
Decreases chance of hash collisions while also being faster due to 4 channel vectorization
2023-04-15 10:08:58 +02:00
why-keithandGitHub a640bd079c Migrate sndApiLog_printf to new logging (#762) 2023-04-13 14:18:45 +02:00
why-keithandGitHub 486e228f72 Migrate gx2Log_printf to new logging (#761) 2023-04-13 14:13:54 +02:00
Exzap a8b30cf96b Temporarily use dummy port for GTK3 2023-04-13 14:02:59 +02:00
Exzap fe2855168d Update SDL2 + Better way to use sys packages on linux 2023-04-13 14:02:59 +02:00
MichaelandGitHub d27935a1bd Update URLs related towards cemu_graphic_packs repo. (#764) 2023-04-13 04:37:53 +02:00
why-keithandGitHub 916e9099ac Migrate force_log_printf to new logging (#714) 2023-04-12 16:32:26 +02:00
why-keithandGitHub 4be57f4896 Migrate force_log_printf to new logging (#714) 2023-04-12 16:31:34 +02:00
Exzap 072c18a6e3 Improve exception logging on posix
Fix compile errors
2023-04-06 07:33:41 +02:00
Exzap 3428e4dae6 Use system libpng for vcpkg on linux 2023-04-06 00:36:39 +02:00
Exzap 59f6fe6e2f Use system GTK3 instead of the vcpkg port 2023-04-04 22:58:38 +02:00
Nicholas FandGitHub 55e1551cc7 Add F11 hotkey to gamepad view (#727) 2023-04-04 04:39:29 +02:00
ForestandGitHub 27f7b4d550 metainfo.xml: respect AppStream version format (#738) 2023-04-03 13:49:14 +02:00
TillsunsetandExzap 82783d0f53 update homebrew to get latest packages and use llvm@15, llvm @16 has a compatibility issue with boost 2023-04-03 13:48:25 +02:00
goeiecool9999andGitHub cb9570e229 Fix disable screensaver workaround (#728) 2023-03-30 11:32:25 +02:00
Colin KinlochandExzap b3180bc4a6 Fix GamePad window when using vulkan with wayland 2023-03-29 18:22:48 +02:00
Colin KinlochandGitHub be1e77186e Wayland: Set app_id for icon in kde (#718) 2023-03-29 16:28:17 +02:00
Nicholas FandExzap 715d2247a9 Allow user to enter fullscreen with F11 2023-03-29 14:24:51 +02:00
TillsunsetandExzap aa63a6a36e Disable the "Disable screen saver" option 2023-03-29 02:23:52 +02:00
Exzap 02ec40b7ba Fetch full history for vcpkg 2023-03-28 18:29:30 +02:00
Exzap 9a75e8df53 Keep vcpkg_overlay_ports folder 2023-03-28 17:53:54 +02:00
ExzapandGitHub 3ff3b732c8 Upgrade vcpkg + submodule dependencies (#719) 2023-03-28 17:43:02 +02:00
JP-CarrandExzap a7f6043205 switched cafeLog_logLine() with cemuLog_log() 2023-03-26 15:10:48 +02:00
TillsunsetandExzap 18a266155f Revert "Force async compile off for macos (#532)"
This reverts commit 523a0e1706.
2023-03-24 18:06:19 +01:00
Rivan ParmarandGitHub 823386cc09 gui: Added location column in Title Manager (#697)
Thanks @RivanParmar!
2023-03-19 11:25:05 +01:00
Exzap 9049ad91f9 Add missing constructor 2023-03-13 05:34:53 +01:00
Exzap eaf006d606 Dont find_package cubeb in vcpkg mode 2023-03-13 05:34:53 +01:00
Exzap e803c6be47 Use attribute for AES-NI instead of -maes option 2023-03-13 05:34:53 +01:00
Exzap 9fb8f4cb6b Fix StringBuf.add() 2023-03-13 05:34:53 +01:00
Exzap 504e0488a8 Remove shaderMulAccuracy "min" option
It's less accurate and it doesn't actually perform better on most hardware.
2023-03-13 05:34:53 +01:00
Exzap 040cc27a40 Logging: Fix typo in preprocessor constant name 2023-03-13 05:34:53 +01:00
Exzap 8ce3f834c4 Latte: Optimize shader decompiler output 2023-03-13 05:34:53 +01:00
Exzap 3590ad9099 PPCRec: Implement MFCR and MTCRF 2023-03-13 05:10:44 +01:00
ExzapandGitHub 3acdd47eaf Merge pull request #682 from Exzap/shader-improvements-2
Utilize VK_KHR_SHADER_FLOAT_CONTROLS if available
2023-03-11 04:41:08 +01:00
Exzap a2c518354f Remove unnecessary include 2023-03-02 16:44:22 +01:00
Exzap 466ad8d35e Latte/Vulkan: Set RoundingModeRTE for all float types
Seems like GLSL's unpackHalf2x16() is affected by the 16bit rounding setting
2023-03-02 16:22:28 +01:00
Exzap f8ea594447 Latte: Small refactor for shader decompiler
Latte: Small refactor for shader decompiler
2023-03-02 16:22:19 +01:00
Exzap 4a564e2447 Latte/Vulkan: Set shader rounding mode via VK_KHR_SHADER_FLOAT_CONTROLS 2023-03-02 16:22:05 +01:00
ExzapandGitHub 43c9a4eccd Fix compilation error when ENABLE_DISCORD_RPC is not set 2023-03-02 11:09:54 +01:00
Georgiy NNandExzap b87465fd8a Fix building with cubeb disabled 2023-02-25 19:17:19 +01:00
Jonathan MohrbacherandExzap 44c16e1c64 Delete dead EmulatedController::find_controller method 2023-02-25 18:45:42 +01:00
lisa-wolfgangandGitHub 4c697d3755 Add cross-platform "disable screen saver" setting (#497) 2023-02-24 22:10:07 +01:00
Exzap 80b1c50b50 coreinit: Fix thread scheduler not resetting quantum
When a thread was force-rescheduled (e.g. via OSYieldThread) the next time it resumed it would not reset the time slice duration (remainingCycles) back to ppcThreadQuantum. As a consequence threads were often immediately rescheduled and only on the next turn they would get their full time slice.

Aside from (very slightly) improving performance, this also fixes the OSDisableInterrupts warning spam in the log for TPHD.
2023-02-22 13:37:14 +01:00
Exzap 9d25b88368 Latte: Add support for MIN_DX10 shader instruction 2023-02-22 13:37:14 +01:00
CrementifandGitHub 05e0f349e0 debugger: Disable Linux read/write breakpoints for now (#669)
It seems that there's some differences for some distros so until a proper solution is found, just disable it for now.
2023-02-20 00:29:32 +01:00
6d75776b28 Add GDB stub for debugging (#657)
* Implement GDB stub debugger

Can be enabled by using the "--enable-gdbstub" option (and the debugger GUI, although that's untested) which'll pause any game you launch at start-up. Will start at port 1337 although it'll eventually be user-editable. The code is a bit weirdly sorted and also just needs a general cleanup, so expect that eventually too. And uses egyptian braces but formatting was easier to do at the end, so that's also something to do.

It has been tested to work with IDA Pro, Clion and the standalone interface for now, but I plan on writing some instructions in the PR to follow for people who want to use this. Memory breakpoints aren't possible yet, only execution breakpoints.

This code was aimed to be decoupled from the existing debugger to be able to be ported to the Wii U for an equal debugging experience. That's also why it uses the Cafe OS's thread sleep and resuming functions whenever possible instead of using recompiler/interpreter controls.

* Add memory writing and floating point registers support

* Reformat code a bit

* Format code to adhere to Cemu's coding style

* Rework GDB Stub settings in GUI

* Small styling fixes

* Rework execution breakpoints

Should work better in some edge cases now. But this should also allow for adding access breakpoints since it's now more separated.

* Implement access breakpoints

* Fix some issues with breakpoints

* Fix includes for Linux

* Fix unnecessary include

* Tweaks for Linux compatibility

* Use std::thread instead of std::jthread to fix MacOS support

* Enable GDB read/write breakpoints on x86 only

* Fix compilation for GCC compilers at least

The thread type varies on some platforms, so supporting this is hell... but let's get it to compile on MacOS first.

* Disable them for MacOS due to lack of ptrace

---------

Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
2023-02-19 15:41:49 +01:00
goeiecool9999andGitHub 05d82b09e9 Add back missing flag to keep background image in background (#667) 2023-02-19 14:52:19 +01:00
goeiecool9999andGitHub cbb79fd34c Separate imgui contexts for TV and Pad windows. (#664) 2023-02-18 11:56:43 +01:00
Douglas ThorandGitHub daf3ef060a BUILD.md: Add note about 'span' not found (#646) 2023-02-08 11:15:33 +01:00
Exzap 97e39e37fc PPCRec: FPRs now use the shared register allocator 2023-02-06 18:03:18 +01:00
Exzap d8bccfe32f PPCRec: Further work on support for typed registers in RA
Additionally there is no more range limit for virtual RegIDs, making the entire uint16 space available in theory
2023-02-05 21:20:26 +01:00
Exzap 6a63eb8871 PPCRec: Partial support for typed registers in RA 2023-02-04 17:54:46 +01:00
Exzap cb619b143d PPCRec: Initial support for typed registers 2023-02-02 17:18:36 +01:00
Exzap 5d96191e00 PPCRec: Fix capitalization in include 2023-01-30 06:57:48 +01:00
Exzap e9ac89da14 PPCRec: Use agnostic breakpoints 2023-01-30 06:30:29 +01:00
Exzap 9dae9461ad PPCRec: Use IMLReg type in FPR RA 2023-01-30 06:01:39 +01:00
Exzap 8e834e6c6e PPCRec: Unify code + misc RA preparation
Whoopsie
2023-01-30 03:52:43 +01:00
Exzap 8fffefedcc PPCRec: Simplify PPC and IML logic instructions
Also implement PPC NAND instruction
2023-01-29 14:57:57 +01:00
Exzap 9ef079cdf8 PPCRec: Use IMLReg in more places, unify and simplify var names 2023-01-29 14:57:57 +01:00
Exzap ac175bcc62 PPCRec: Refactor load/store instructions 2023-01-29 14:57:57 +01:00
Exzap f59f4af582 PPCRec: Refactoring and clean up 2023-01-29 14:57:57 +01:00
Exzap e0dd7f3bf9 PPCRec: Rework CR bit handling
CR bits are now resident in registers instead of being baked into the instruction definitions. Same for XER SO, and LWARX reservation EA and value.

Reworked LWARX/STWCX, CRxx ops, compare and branch instructions. As well as RC bit handling. Not all CR-related instructions are reimplemented yet.

Introduced atomic_cmp_store operation to allow implementing STWCX in architecture agnostic IML

Removed legacy CR-based compare and jump operations
2023-01-29 14:57:57 +01:00
Exzap 5b07df5f29 PPCRec: Avoid complex optimizations in backend
It's better to do it in a lowering pass so that the backend code can be kept as simple as possible
2023-01-29 14:56:20 +01:00
Exzap b5d237e40e PPCRec: Rework carry bit and generalize carry IML instructions
Carry bit is now resident in a register-allocated GPR instead of being backed directly into IML instructions

All the PowerPC carry ADD* and SUB* instructions as well as SRAW/SRAWI have been reworked to use more generalized IML instructions for handling carry

IML instructions now support two named output registers instead of only one (easily extendable to arbitrary count)
2023-01-29 14:56:20 +01:00
Exzap db4563879e PPCRec: Further unify CR code 2023-01-29 14:56:20 +01:00
Exzap abb7df11e6 PPCRec: Streamline instructions + unify code for CR updates 2023-01-29 14:56:20 +01:00
Exzap dfcd1232e1 PPCRec: New compare and cond jump instrs, update RA
Storing the condition result in a register instead of imitating PPC CR lets us simplify the backend a lot. Only implemented as PoC for BDZ/BDNZ so far.
2023-01-29 14:56:20 +01:00
Exzap 02fef01a2f PPCRec: New x86-64 code emitter 2023-01-29 14:56:20 +01:00
Exzap 2976fa78c5 PPCRec: Rename register constants to avoid name collision 2023-01-29 14:56:20 +01:00
Exzap 058d13f70d PPCRec: Make register pool for RA configurable 2023-01-29 14:56:20 +01:00
Exzap 906f397839 PPCRec: Make LSWI/STWSI more generic + GPR temporaries storage 2023-01-29 14:56:20 +01:00
Exzap dae91088fc PPCRec: Clean up unused flags 2023-01-29 14:56:20 +01:00
Exzap 5207e9c2df PPCRec: Remove now unused PPC_ENTER and jumpMarkAddress 2023-01-29 14:56:20 +01:00
Exzap 88485c32bb PPCRec: Fix single segment loop not being detected
Also removed associatedPPCAddress field from IMLInstruction as it's no longer used
2023-01-29 14:56:20 +01:00
Exzap dbe73e8eff PPCRec: Unify BCCTR and BCLR code
Instead of having fixed macros for BCCTR/BCCTRL/BCLR/BCLRL we now have only one single macro instruction that takes the jump destination as a register parameter.
This also allows us to reuse an already loaded LR register (by something like MTLR) instead of loading it again from memory.

As a necessary requirement for this: The register allocator now has support for read operations in suffix instructions
2023-01-29 14:56:20 +01:00
Exzap bdfc99e9d5 PPCRec: Fix merge conflicts 2023-01-29 14:56:20 +01:00
Exzap 98e398c92e PPCRec: Reworked IML builder to work with basic-blocks
Intermediate commit while I'm still fixing things but I didn't want to pile on too many changes in a single commit.
New:
Reworked PPC->IML converter to first create a graph of basic blocks and then turn those into IML segment(s). This was mainly done to decouple IML design from having PPC specific knowledge like branch target addresses. The previous design also didn't allow to preserve cycle counting properly in all cases since it was based on IML instruction counting.
The new solution supports functions with non-continuous body. A pretty common example for this is when functions end with a trailing B instruction to some other place.

Current limitations:
- BL inlining not implemented
- MFTB not implemented
- BCCTR and BCLR are only partially implemented
2023-01-29 14:56:20 +01:00
Exzap 400b107b8c PPCRec: Move X64 files into subdirectory and rename 2023-01-29 14:55:19 +01:00
Exzap 294f9ed11b PPCRec: Emit x86 movd for non-AVX + more restructuring 2023-01-29 14:55:19 +01:00
Exzap 5ecc65dc45 PPCRec: Move IML register allocator 2023-01-29 14:55:19 +01:00
Exzap e36e7b5d18 PPCRec: Move IML optimizer file 2023-01-29 14:55:19 +01:00
Exzap ac57c31321 PPCRec: Move analyzer file + move some funcs to IMLInstruction 2023-01-29 14:55:19 +01:00
Exzap c14300c6d4 PPCRec: Move debug printing + smaller clean up 2023-01-29 14:55:19 +01:00
Exzap 45403c242a PPCRec: Rename IML structs for better clarity 2023-01-29 14:55:19 +01:00
Exzap 0f1276e785 PPCRec: Move Segment and Instruction struct into separate files 2023-01-29 14:55:19 +01:00
Exzap 12723b6034 PPCRec: Use vector for instruction list 2023-01-29 14:55:19 +01:00
Exzap 954be7e6a3 PPCRec: Use vector for segment list + deduplicate RA file 2023-01-29 14:55:19 +01:00
Exzap 808b9aebdc Latte: Fix race condition on close during game boot 2023-01-29 14:55:19 +01:00
ExzapandGitHub f3ff919be2 Code clean up + replace some wstring instances with utf8 (#640) 2023-01-29 13:53:31 +01:00
bslhqandGitHub ca79a6aa0d GameList: Fix hidden last column (#632) 2023-01-29 13:06:20 +01:00
Exzap 8651c4bae7 coreinit: Correctly return success code in FSRemove 2023-01-28 10:05:29 +00:00
Exzap 9a4f945f33 Add dump folder to .gitignore 2023-01-27 09:57:10 +00:00
Exzap 404af95a2c Latte: Less aggressive texture readback
By mistake we would read affected textures back after every single drawcall. As an optimization if the same texture gets drawn to multiple times we'll try to only read it back once at the end of the sequence.
2023-01-27 09:57:10 +00:00
Exzap 859dc78e90 coreinit: Dont yield uninterruptible threads in spinlock 2023-01-27 09:57:10 +00:00
Exzap 387b712959 Logging: Add TextureReadback logtype and clean up code 2023-01-27 09:57:10 +00:00
Exzap 9bbfd33842 Latte: FragCoord w should not be reciprocal
Fixes rendering in various Virtual Console DS titles
2023-01-27 09:57:10 +00:00
Exzap 43b5ad2f1c PPCInterpreter: Improve overflow handling 2023-01-27 09:57:10 +00:00
Exzap 4b5014c16a coreinit: Fix memory mapping API
Fixes Unity based games freezing on boot
2023-01-27 09:57:10 +00:00
Exzap f2671f417f Input: Fix potential race condition
Operator = for ControllerButtonState wasn't properly synchronized
2023-01-27 09:57:10 +00:00
jn64andGitHub 9d55f46eb1 Always show "Open Cemu folder" menu item (#612) 2023-01-13 15:59:15 +01:00
UltraHDRandGitHub 4014de622b Add macOS to README.md (#599) 2023-01-13 13:49:01 +01:00
TillsunsetandGitHub 1cf72265cd Update to llvm15 (#594) 2023-01-06 03:46:10 +01:00
arijnrandGitHub 1e946f76be BUILD.md: Add g++ to the dependencies (#589) 2023-01-06 03:45:30 +01:00
goeiecool9999andGitHub 33bd10b4e0 Vulkan: Use the correct resolution for out-of-date check (#595) 2022-12-29 00:19:05 +01:00
qurious-pixelandGitHub 1b660e0c16 AppImage: Better motion support (#593)
Add libudev headers for better motion support on supported controllers.
2022-12-28 18:32:29 +01:00
bslhqandGitHub 0c6f18ab97 TitleMgr: Fix "c" showing up in account list for saves (#590) 2022-12-26 23:46:53 +01:00
TillsunsetandGitHub 058d11b49b Optimized timer code for macOS (#576) 2022-12-15 10:28:44 +01:00
SSimcoandGitHub fcab8f8f1a Linux: Add CMake find module for wayland + make wayland optional (#572) 2022-12-15 08:44:14 +01:00
TillsunsetandGitHub aea9f5b966 Fix SDL controller reversed y axis in UI (#574) 2022-12-14 05:41:48 +01:00
jn64andGitHub c78b3da872 Minor AppImage fixes (#561) 2022-12-12 09:46:20 +01:00
TillsunsetandGitHub 4491560b32 Add check for backwards delete (#564) 2022-12-09 18:01:08 +01:00
ElijahandGitHub 5a143c7b4b Linux/MacOS: Use faster clock_gettime() for tick_cached() (#563) 2022-12-08 17:08:15 +01:00
SSimcoandGitHub fca7f5dfe4 Linux: Add Vulkan support for wayland (#553) 2022-12-07 16:45:25 +01:00
ExzapandGitHub 2c81d240a5 Make codebase more CPU-agnostic + MacOS disclaimer (#559) 2022-12-07 01:48:24 +01:00
Tom LallyandGitHub 445b0afa95 Better screenshot error handling (#552) 2022-12-05 17:16:08 +01:00
iamqkandGitHub c1afa4cad0 PPCAssembler: Fix incorrect cast sign of branch distance calculate (#555) 2022-12-05 13:52:02 +01:00
Tom LallyandGitHub dd538d477c Correctly create screenshot directory if it does not exist (#551) 2022-12-03 17:57:32 +01:00
b361b154d8 Cross-platform screenshots (#543)
Co-authored-by: Tom Lally <tomlally@protonmail.com>
Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
2022-12-02 04:51:07 +01:00
goeiecool9999andGitHub 2cfb7f3737 Automatically scale imgui text based on display pixel density (#545) 2022-12-01 15:58:08 +01:00
ExzapandGitHub 503e99d069 Fix MSVC workflow
Selecting a toolset version manually is no longer necessary
2022-11-30 19:16:37 +01:00
goeiecool9999andGitHub d3721c3f46 Fix render resolution at different UI scales (#514) 2022-11-30 13:39:32 +01:00
goeiecool9999andGitHub a3476c7b7c macOS: Workaround for MoltenVK stride limitation (#534) 2022-11-30 01:26:42 +01:00
goeiecool9999andGitHub 79e731d9b4 Add macOS keycodes for left/right control and tab (#535) 2022-11-30 01:26:12 +01:00
TillsunsetandGitHub 6f985c3c78 Fix black screen when graphics packs are used (#541) 2022-11-29 10:54:11 +01:00
TillsunsetandGitHub 87d2f8ad55 Fix shader preset regex (#536) 2022-11-28 08:24:52 +01:00
TillsunsetandGitHub 523a0e1706 Force async compile off for macos (#532) 2022-11-26 02:10:51 +01:00
goeiecool9999andGitHub bc104859f3 Vulkan: return to more conventional swapchain sync method, encapsulate more code (#525) 2022-11-25 09:51:47 +01:00
8162477dc1 ui: Add Open Cemu folder & delete shader cache buttons (#524)
* Add option to open UserDataPath folder
* Add option to remove shader caches

Co-authored-by: ssimco <ssimco-github@proton.me>
2022-11-24 18:57:13 +01:00
goeiecool9999andGitHub cbdf381b31 Fix gamepad hotkey and game profile setting (#510) 2022-11-24 12:29:29 +01:00
SSimcoandGitHub c43fc81f8e Disable key events for InputPanel's text controls (#520) 2022-11-24 11:10:37 +01:00
greybaronandGitHub c0ebbef9bd macOS: Fix error sound for every KB keypress on render canvas (#521) 2022-11-21 22:47:53 +01:00
goeiecool9999andGitHub 8ff668a303 fix flicker on windows (#523) 2022-11-21 21:45:46 +01:00
goeiecool9999andGitHub f4c2d16a3a Attempt to fix flicker on resize, don't recreate if image was already acquired. (#522) 2022-11-21 19:06:35 +01:00
goeiecool9999andGitHub 3a94a276da Vulkan: Further simplify swapchain code (#502) 2022-11-21 16:47:43 +01:00
qurious-pixelandGitHub 3f84c7fa24 AppImage: Fix resource path (#517)
- Interface languages
- Font cache
- GameProfile
2022-11-21 13:14:34 +01:00
goeiecool9999andGitHub 01ce523f01 Input settings: Fix combobox dropdown not working on linux (#500) 2022-11-21 13:13:19 +01:00
TillsunsetandGitHub 50cdaf9a16 remove redundant en language file (#518) 2022-11-21 13:11:35 +01:00
goeiecool9999andGitHub 9ce52ad83a Linux/macOS: Implement overlay CPU/memory statistics (#480) 2022-11-20 19:53:45 +01:00
MythicalPlayzandGitHub c17097369b Redownload BOSS files if they are not found (#504) 2022-11-20 17:21:20 +01:00
SSimcoandGitHub 8f1ee9e5aa Fix checking space using non existing folder (#503) 2022-11-18 12:46:05 +01:00
goeiecool9999andGitHub 57c8dec335 fix two if statements checking range of number wrong (#494) 2022-11-17 15:42:08 +01:00
goeiecool9999andGitHub 2adabcb936 Linux: Save 10.7MiB of useless debug info (#475) 2022-11-17 15:31:34 +01:00
SSimcoandGitHub b1c70588fe Enable online features for Unix (#486) 2022-11-15 17:03:46 +01:00
goeiecool9999andGitHub 4442efa8ac rely on distro policy to make executable PIE, but do enforce noexecstack on final output (#490) 2022-11-13 17:23:48 +01:00
goeiecool9999andGitHub e9d10a9581 Linux+OpenGL: Implement GUI vsync setting (#477) 2022-11-13 08:29:25 +01:00
goeiecool9999andGitHub 2842615edb Fix various colour values for dark themes (#439) 2022-11-13 08:27:09 +01:00
qurious-pixelandGitHub 94b179ef5a [APPIMAGE] Update AppImage (#481)
- include libthai.so.0
- set LC_ALL
2022-11-12 07:38:52 +01:00
jn64andGitHub 7f21104b54 Disable Discord RPC checkbox based on build option (#476) 2022-11-11 20:51:50 +01:00
goeiecool9999andGitHub bbd8d6d5ac Linux OpenGL: Fix gamepad not updating (#474) 2022-11-11 08:33:44 +01:00
goeiecool9999andGitHub 4d68446f14 Vulkan: Further swapchain code improvements. (#473) 2022-11-11 08:14:38 +01:00
goeiecool9999andGitHub a0e69ffbbd Linux: Explicitly enable some flags related to security. (#446) 2022-11-09 07:17:50 +01:00
c3d6cad428 Added a note on re-building to fix RPATH issues. (#352)
Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
2022-11-09 04:22:09 +01:00
UltraHDRandGitHub 58c7b56c60 Add Apple Silicon build instructions (#280) 2022-11-09 02:47:23 +01:00
bslhqandGitHub be287a1f4e ImGui: match all begin()/end() (#470) 2022-11-09 02:45:40 +01:00
TillsunsetandGitHub 5adb1e9618 Add commit hash to build name on build check workflow (#463) 2022-11-07 02:47:59 +01:00
goeiecool9999andGitHub 138510106c Vulkan: Fix freeze when closing pad view (#435) 2022-11-06 00:40:00 +01:00
Exzap 948460cad7 InputSettings: Refresh panels on profile load and other operations 2022-11-06 00:32:33 +01:00
Exzap 3df8217a02 SDLController: Do not manually recycle controller instance
SDL_GameControllerFromInstanceID does not increase internal ref counter.
Fixes a crash when removing an SDL controller that is in use by another profile
2022-11-06 00:32:33 +01:00
Exzap ec6726e85c Use generic EC_POINT_get_affine_coordinates 2022-11-06 00:32:33 +01:00
goeiecool9999andGitHub 348d86648f Vulkan: Refactor swapchain code (#399) 2022-11-04 15:22:29 +01:00
ExzapandGitHub 592c9b2776 Update build_check.yml 2022-11-04 15:09:25 +01:00
qurious-pixelandGitHub 5d156672e8 CI: Add AppImage Build (#452) 2022-11-04 15:07:17 +01:00
TillsunsetandGitHub 2f86622a68 Don't go to mount point for free space check (#450) 2022-11-04 14:34:32 +01:00
ExzapandGitHub a40b226e00 CubebInput: Avoid redundant CoInitializeEx (#449) 2022-11-03 18:29:21 +01:00
TillsunsetandGitHub 521f2fb707 MacOS: Workaround for Metal stride limitation (#445) 2022-11-03 12:51:32 +01:00
goeiecool9999andGitHub a129d22a57 Vulkan: Experimental fix for self-dependency barriers during renderpass (#431) 2022-11-03 00:43:26 +01:00
Adrian GraberandGitHub d4e14d2b05 Implement proper microphone support (#251) 2022-11-03 00:24:34 +01:00
goeiecool9999andGitHub dfa7774c4c Non-windows: Link fontawesome into executable. (#442) 2022-11-03 00:23:31 +01:00
goeiecool9999andGitHub c3182aedd9 GeneralSettings: Update vsync after settings close (#401) 2022-10-31 17:54:26 +01:00
Zhaohui ShiandGitHub f41f7b63e8 DSUController: fix crash when running on offline mode (#434) 2022-10-31 14:27:35 +01:00
TillsunsetandGitHub c143950dd1 Fix fullscreen on macos (#429) 2022-10-30 01:40:53 +02:00
jn64andGitHub 4e991d603a Add libpulse-dev to CI build (#430) 2022-10-30 01:39:39 +02:00
OatmealDomeandGitHub e0aaf631c4 macOS: Set values for empty keys in Info.plist (#425) 2022-10-28 16:57:14 +02:00
TillsunsetandGitHub 9ebbfb3ae2 Fix some compiler warnings (#416) 2022-10-26 14:47:44 +02:00
gurrgurandGitHub 3869b47c35 OpenGL: Bind back buffer before clearing (#222) (#414) 2022-10-26 14:07:34 +02:00
GaryOderNichtsandGitHub d303a7f502 coreinit: Implement OSGetSystemTick (#415) 2022-10-26 14:06:16 +02:00
GaryOderNichtsandGitHub 2461464ba7 FSA: Add missing path translations (#413) 2022-10-26 00:25:46 +02:00
gurrgurandGitHub 76c75f767b Use portable format specifiers (#411)
Fixes #387
2022-10-25 20:38:29 +02:00
Zhaohui ShiandGitHub 88f63ca373 DSU: Fix bad crc calculate (#410) 2022-10-25 18:25:19 +02:00
Zhaohui ShiandGitHub 643ac57a30 DSU: fix build error when enable DEBUG_DSU_CLIENT (#408) 2022-10-24 23:14:22 +02:00
ExzapandGitHub 4561a6929c Fix capitalization of Cemu executable in .desktop file 2022-10-23 23:32:36 +02:00
emiylandGitHub 8f674933d2 Create Cemu .app bundle for macOS (#364) 2022-10-23 16:58:28 +02:00
ExzapandGitHub 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
Jeremy KescherandGitHub c40466f3a8 Fix incorrect title ID (00050000-1011000? -> 00050000-10111000) (#404) 2022-10-23 14:03:51 +02:00
TillsunsetandGitHub 1bcc064593 Add check for "." in FSC path (#402) 2022-10-23 13:06:20 +02:00
Squall LeonhartandGitHub ffa213c794 Generalised game profile cleanup and corrections (#389) 2022-10-21 12:39:26 +02:00
MythicalPlayzandGitHub c217b3ee32 GameList: Use title name based on console language (#388) 2022-10-21 00:17:11 +02:00
goeiecool9999andGitHub dd1cb1cccf Update title manager when clearing MLC path in settings (#319) 2022-10-20 13:18:44 +02:00
goeiecool9999andGitHub 9df1325d14 Linux: Resolve backtrace symbols directly from .symtab instead of .dynsym (#385) 2022-10-20 13:12:16 +02:00
MythicalPlayzandGitHub 271a4e4719 Fixed Discord Rich Presence not working on games that are on MLC (#383) 2022-10-18 17:08:09 +02:00
goeiecool9999andGitHub 15b3a3f77d Linux: Remove libpng dependency from wxwidgets (#382) 2022-10-17 16:05:35 +02:00
ExzapandGitHub 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
MythicalPlayzandGitHub 753040f73a Added Boot Image for Gamepad (#372) 2022-10-17 11:26:32 +02:00
goeiecool9999andGitHub e88d20cbfb Fix crashes when wxWidgets tries to free stack allocated dialogs (#377) 2022-10-16 09:02:33 +02:00
TillsunsetandGitHub 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
TillsunsetandGitHub 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
ExzapandGitHub 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
ExzapandGitHub 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
ExzapandGitHub f42bebd196 Merge pull request #361 from Exzap/tweaks
Fix encoding error in input profiles + update metainfo
2022-10-12 15:25:01 +02:00
Exzap 0412dec078 Fix metainfo
Comment out vcs-browser url type for now. It's a pretty recent addition to the standard and is considered an error by some older utilities
2022-10-12 15:23:04 +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
SSimcoandGitHub 8b3f36ad50 Use correct preprocessor check for Linux (#360) 2022-10-12 13:10:57 +02:00
SSimcoandGitHub d6ba61cf64 Add support for non portable mode (#356) 2022-10-12 08:03:26 +02:00
ExzapandGitHub 2b9edced81 Minor tweaks and code clean up (#357) 2022-10-11 09:17:34 +02:00
MythicalPlayzandGitHub b07e9efba4 Add support for choosing network service (incl Pretendo+Custom) (#302) 2022-10-11 04:04:47 +02:00
ExzapandGitHub 52cc7c5996 Follow imgui recommendation and streamline build dependencies (#355) 2022-10-11 01:43:15 +02:00
goeiecool9999andGitHub 431c5a101f Linux: Print demangled symbols on backtrace (#312) 2022-10-10 02:35:04 +02:00
TillsunsetandGitHub 0c9fb3143f memory optimization, using posix_memalign (#350) 2022-10-09 10:43:45 +02:00
TillsunsetandGitHub 638e9e1f87 Workaround for the h264 video crash on macOS (#348) 2022-10-09 08:45:26 +02:00
TillsunsetandGitHub b724a657e6 MoltenVk: Add missing texture decoders (#332) 2022-10-08 15:07:54 +02:00
bslhqandGitHub 551f821109 Auto resize last column (#265) 2022-10-07 14:30:06 +02:00
emiylandGitHub 00968acc1d dedicated decoder for R4G4 and R4G4B4A4 to R8G8B8A8 (#331) 2022-10-07 02:39:06 +02:00
emiylandGitHub 4519a59d74 [ih264] per-function target attribute on clang and GCC (#328) 2022-10-04 15:24:14 +02:00
purofleandGitHub 8a0fe21589 [docs] add --needed in ArchLinux dependencies (#324) 2022-10-03 13:05:42 +02:00
TillsunsetandGitHub fb5ecca157 Vulkan: Use correct texture clear in LatteDraw_handleSpecialState8_clearAsDepth (#321) 2022-10-02 19:18:35 +02:00
TillsunsetandGitHub 11f6e2b7ee Vulkan: Implement texture decoder for R5G6B5_UNORM to R8G8B8A8_UNORM (#320) 2022-10-02 01:48:13 +02:00
emiylandGitHub 9541c8ae85 MoltenVk: Workaround for unsupported format R5_G6_B5_UNORM (#318) 2022-09-30 18:07:00 +02:00
ExzapandGitHub 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
emiylandGitHub ecfbbd4e26 MoltenVK: Workaround for unsupported formats (#315) 2022-09-30 15:28:56 +02:00
Narr the RegandGitHub 3767257220 nfp: Fix corruption, correct structs and use write counters (#310) 2022-09-29 13:00:46 +02:00
TillsunsetandGitHub 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
UltraHDRandGitHub a28d67bafd Remove -DPUBLIC_RELEASE=ON from macOS command (#309) 2022-09-27 22:18:35 +02:00
goeiecool9999andGitHub 6ecc4be0da Posix/Linux: Add setting to disable coredumps 2022-09-27 13:58:50 +02:00
goeiecool9999andGitHub 35afb99c99 [docs] Add llvm as a required package for Arch Linux (#308) 2022-09-27 12:48:35 +02:00
SSimcoandGitHub 25dae98ce0 Fix crash on GTK when a gfx pack preset value is changed (#300) 2022-09-26 07:53:10 +02:00
emiylandGitHub 53c7daa603 [docs] Add brew installation instructions for macos (#303) 2022-09-25 21:38:31 +02:00
ExzapandGitHub 101ff7783e Revert accidental removal of release tag 2022-09-24 12:55:13 +02:00
ExzapandGitHub 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
ExzapandGitHub 8e89187f95 Remove misleading link from generated experimental releases 2022-09-24 11:11:54 +02:00
ExzapandGitHub 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
jcrm1andGitHub b720d17a97 CI: Add macOS x64 to build check and releases (#274) 2022-09-23 11:17:50 +02:00
ExzapandGitHub 9b76b0e2d3 CI: Fix Windows build running out of disk space (#284)
- Clean package temporaries during building to save disk space
- Remove msvc workaround which is no longer needed
2022-09-22 11:34:13 +02:00
TillsunsetandGitHub 030d15900d Add MacOS build instructions (#279) 2022-09-20 20:26:54 +02:00
TillsunsetandGitHub 7864d76eca fixed the string encoding issue on macOS (#277) 2022-09-20 14:50:34 +02:00
Crementif 6fa0ac6eaa [docs] Recommend PUBLIC_RELEASE
Most people following the guide are currently not really developers and this was a fairly hidden option that's easily missed.

The disabled version will later change to be an actual custom cmake target instead of a preprocessor flag, but that'll require more code to be adjusted.

Not using the flag means that Cemu keeps some (performance-costing) debug checks in, alongside more logging and a debug logging console on Windows.
2022-09-20 00:15:53 +02:00
Crementif 510d80038d [coreinit] Add OSIsDebuggerPresent 2022-09-19 21:41:01 +02:00
SSimcoandGitHub 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
ExzapandGitHub 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
TillsunsetandGitHub 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
ExzapandGitHub 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
dd14778561 [docs] Explain how to update local cemu repo + General fixes (#227)
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
2022-09-17 14:53:46 +02:00
TillsunsetandGitHub 41dcd48048 Fix a small regression when building in Macos (#262) 2022-09-17 13:52:12 +02:00
Crementif c113565fe3 [deps] Update zarchive 2022-09-17 10:45:27 +02:00
Herman SemenovandGitHub 03f5967408 Fix incorrect streamout buffer index in GS + refactor various code (#258) 2022-09-17 03:45:18 +02:00
Maximilian Downey TwissandGitHub 4a3d02db55 Properly list files in CMakeLists instead of using GLOB (#249) 2022-09-17 03:24:57 +02:00
ExzapandGitHub 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
ShoegzerandGitHub 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
ExzapandGitHub 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 SaltoriandGitHub 664d7ee902 Clean up more Cemuhook leftovers (#253) 2022-09-16 13:34:41 +02:00
CrementifandGitHub cebdccfdf5 Update readme about matrix server
Supersedes https://github.com/cemu-project/Cemu/pull/245
2022-09-15 04:06:40 +02:00
ExzapandGitHub 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
Crementif 6cf5dc9a56 Add matrix server for non-discord chatting
Fixes https://github.com/cemu-project/Cemu/issues/113
2022-09-11 16:56:51 +02:00
ExzapandGitHub 0afa2d75aa CI: build.yml no longer invokes itself, always produce artifact (#243)
- Build check is now a separate workflow
- Build with release config instead of debug
- Upload artifacts
2022-09-11 06:41:19 +02:00
capitalistsandGitHub b5963afbb5 Fix DSUController socket option error on Linux (#234) 2022-09-11 04:20:40 +02:00
SSimcoandGitHub 9a60979242 Linux: Avoid out-of-bounds raw keycode array access (#226) 2022-09-11 02:00:02 +02:00
capitalistsandGitHub d4879da95c Implement analog triggers for DSUController (#239) 2022-09-11 01:32:17 +02:00
Fs00 b47b38448c Add workflow for generating POT file 2022-09-10 19:17:14 +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
ExzapandGitHub 3349d7b424 Merge pull request #231 from Exzap/main
FSC: Replace wstring paths with utf8 encoded strings + misc clean up
2022-09-10 00:48:20 +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
SSimcoandGitHub cf598e38c1 Linux: Find case-insensitive file/folder path if not found (#196) 2022-09-09 20:16:46 +02:00
uranuspucksaxophoneandGitHub 6dda53e84f Improve docs (#216) 2022-09-09 18:39:23 +02:00
goeiecool9999andGitHub 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
TotalCaesar659andGitHub 76313fc238 Update bug tracker URL to use HTTPS (#211) 2022-09-08 23:52:45 +02:00
ExzapandGitHub 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 RedaelliandGitHub 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 LallyandGitHub 6cdb6eed17 Cleanup udiv128 (#206) 2022-09-08 02:12:53 +02:00
bitscherandGitHub 4eaa600b57 Fix various compiler warnings given by Clang (#170) 2022-09-07 20:04:32 +02:00
bslhqandGitHub 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 BiandGitHub b752d2eddd fix clang-cl (#202) 2022-09-07 18:22:40 +02:00
Timothy RedaelliandGitHub 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
goeiecool9999andGitHub e20bfd00ec Separate filestream.h into OS specific implementation files (#190) 2022-09-07 02:42:25 +02:00
Tom LallyandGitHub f8b5024c09 Improved macro clarity. (#188) 2022-09-07 02:27:52 +02:00
ExzapandGitHub e5d7d5d173 Use utf8 aware string conversion for wxLaunchDefaultBrowser() (#185) 2022-09-05 18:42:24 +02:00
HaxorzzandGitHub 0030fa44a5 Slight tweaks to greek translation (#180) 2022-09-05 15:57:02 +02:00
ExzapandGitHub 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
Andrea PappacodaandGitHub 728bd3178b build: update required fmt version (#183) 2022-09-05 15:38:25 +02:00
ExzapandGitHub 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
bitscherandGitHub 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
SSimcoandGitHub 0ed4fdcd78 Update fmt version to 9.1.0 (#177) 2022-09-05 14:48:44 +02:00
bitscherandGitHub 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 BiandGitHub a54a3ec74e Fix build using clang-cl on windows and improve driver detection (#129) 2022-09-04 23:15:40 +02:00
ExzapandGitHub 4ed18a65c3 Name output binary Cemu_<CONFIG> and always place it in bin/ (#179) 2022-09-04 22:23:24 +02:00
bslhqandGitHub 1373c76eb9 fix H264_IsBotW() return false while BotW's TitleRegion is JP (#174) 2022-09-04 18:19:27 +02:00
LoaTcHiandGitHub 14d6fb0987 Added french translation on GenericName field (#160) 2022-09-04 02:01:46 +02:00
bitscherandGitHub f8297eeb44 Fix game list ordering & Favorite checkbox (#163) 2022-09-04 01:32:32 +02:00
ExzapandGitHub 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
ExzapandGitHub 8dd1688ca7 coreinit: Make OSReport and OSConsoleWrite thread-safe 2022-09-03 23:53:45 +02:00
Francesco SaltoriandGitHub 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
bitscherandGitHub 1a1de370e4 Portable way of opening URLs and directories (#156)
Replaced every instance of ShellExecute with wxLaunchDefaultBrowser
2022-09-03 22:32:31 +02:00
uranuspucksaxophoneandGitHub f3c70e69b4 Add curl as linux build dependency (#161) 2022-09-03 21:49:59 +02:00
larevehkaojaandGitHub 76126e69b2 Add Finnish translation for linux distributions (#122) 2022-09-03 10:40:54 +02:00
ZiemasandGitHub afb08f23e2 cmake: Exclude unnecessary dep build targets (#150) 2022-09-03 10:34:47 +02:00
Andrea PappacodaandGitHub 8c617a39b7 style: use std::enable_if & co instead of boost:: (#153) 2022-09-02 21:06:05 +02:00
ExzapandGitHub 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
ExzapandGitHub 4ed38a28b9 Merge pull request #112 from Tachi107/build-minor-fixes
build: minor refactoring and fixes
2022-09-02 19:22:19 +02:00
Tom LallyandGitHub f5972dfbb0 Per-function target attribute on clang and GCC. (#152) 2022-09-02 19:10:41 +02:00
Tom LallyandGitHub 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
bitscherandGitHub b1e92f1779 Fix more UI asserts (#146) 2022-09-02 11:01:17 +02:00
CrementifandGitHub 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
bitscherandGitHub a3b1af4e3d Add SIGINT handler on posix systems (#145) 2022-09-02 09:32:33 +02:00
ExzapandGitHub 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
d3a7b3b5a6 Misc. Linux improvements and bug fixes. (#121)
Co-authored-by: Tom Lally <tomlally@protonmail.com>
2022-09-01 20:46:20 +02:00
bitscherandGitHub b8d4cf5b29 Fix asserts in TitleManager and DownloadManager (#134) 2022-09-01 18:24:07 +02:00
ExzapandGitHub d8da8a54a6 Infrastructure for shipping and auto-updating experimental releases (#131) 2022-08-31 12:04:09 +02:00
ExzapandGitHub e147c1b4a6 cmake workaround for CemuAsm failing to link on msbuild 2022-08-31 10:41:24 +02:00
ArtemisX64andGitHub 0630e8d845 Linker(Vcpkg) Error: undefined reference to libdecor (#128) 2022-08-31 07:53:04 +02:00
Marcin ChojnackiandGitHub 527ee3aea5 Initial implementation of macOS Vulkan renderer over MoltenVK (#124) 2022-08-30 19:02:56 +02:00
Marcin ChojnackiandGitHub 15b71c57dd Correct wxMenu ID to resolve macOS crash (#125) 2022-08-30 17:55:34 +02:00
CrementifandGitHub dff782eb0d docs: Add warning about clang-14 issue 2022-08-30 17:53:32 +02:00
7d461d1658 docs: Improve build instructions (#109)
Co-authored-by: RyzenDew <84041391+RyzenDew@users.noreply.github.com>
2022-08-30 16:36:14 +02:00
niko1point0andGitHub 584938d8f3 Renable Nvidia Multithreaded Pipeline compile after driver 515 (#91) 2022-08-30 15:58:43 +02:00
Krystian BookerandGitHub 60074c440d Bug #620 Fixed crash when no audio devices are present (#118) 2022-08-30 14:10:05 +02:00
bitscherandGitHub 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
P. "Ivory" VasilopoulosandGitHub 86c0a8f698 Add Greek translation for Linux distributions (#106) 2022-08-30 06:24:23 +02:00
WilliamandGitHub 1fba15a4c5 Add pt_BR to desktop and metainfo files (#110) 2022-08-30 06:17:53 +02:00
Stefano CalabreseandGitHub 5b9483f7d8 Add Italian translation for Linux distributions (#116) 2022-08-30 06:14:17 +02:00
Tom LallyandGitHub c065d22dda Removed THREAD_LOCAL macro. (#101) 2022-08-30 06:10:33 +02:00
Amaro MartínezandGitHub d94ecfe078 Add Spanish translation for Linux distributions (#105) 2022-08-29 10:00:08 +02:00
Andrea PappacodaandGitHub 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 LallyandGitHub 454b587e36 Fix compilation on GCC and other Linux fixes (#80) 2022-08-28 15:29:15 +02:00
Morgan HofmannandGitHub 96dcc7c82e Dutch translations for Linux distributions (#98) 2022-08-28 12:57:09 +02:00
IntriguingTilesandGitHub 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
Crementif ef61361b87 deps: Update zarchive submodule 2022-08-28 00:52:18 +02:00
ArtemisX64andGitHub 01c58555f3 Fixes Path Issues (#70)
* Fix bad path
2022-08-27 09:57:30 +02:00
Arne Morten KvarvingandGitHub 8459cd928c fix some printf format specifiers (#76)
use the definition in cinttypes for portability
2022-08-27 09:33:01 +02:00
gurrgurandGitHub 5cba1a1185 gui: keep shown graphic pack when clicking on preset dropdown (#77) 2022-08-27 05:33:30 +02:00
LoaTcHiandGitHub 664e6684b8 Added french translation to the shortcut and metainfo file. (#81)
* Added french translation to the shortcut comment and metainfo
2022-08-27 05:15:56 +02:00
CrementifandGitHub ca78b92718 Remove cemuhook and fix exports (#73) 2022-08-26 19:41:42 +02:00
Crementif fb76d714f2 cmake: Set startup project for MSVC 2022-08-26 17:56:19 +02:00
Crementif 29f3845ae5 git: Ignore more files in bin folder
Also removes the example.ini since it's outdated.
2022-08-26 17:41:07 +02:00
tastymeatballandGitHub e524a6c16d Add Rudimentray Proxy Support (#68)
* Add Rudimentray Proxy Support to NAPI
2022-08-26 17:04:46 +02:00
TotalCaesar659andGitHub b2b79b4844 Add Russian translation to the shortcut comment (#67) 2022-08-26 15:40:15 +02:00
ArtemisX64andGitHub 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 PappacodaandGitHub 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
JakobDevandGitHub 723fd8cbef Add AppStream (#10)
* Add AppStream
2022-08-26 09:29:58 +02:00
JakobDevandGitHub 049677508f Add .desktop file (#12)
* Add .desktop file
2022-08-26 09:28:39 +02:00
ExzapandGitHub 2a45636f7a CI: Use pull_request over pull_request_target 2022-08-26 08:43:42 +02:00
Alexey VarfolomeevandGitHub ebcff2e319 fix unix path on IOSU/PDM (#60)
With PR #52 this path was missed
2022-08-26 06:21:07 +02:00
Marcin ChojnackiandGitHub 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
ExzapandGitHub fb0c36f714 Update BUILD.md 2022-08-25 15:35:30 +02:00
TotalCaesar659andGitHub 7b1f74b3d5 Update URLs to HTTPS (#44) 2022-08-25 15:33:12 +02:00
ExzapandGitHub 00327129b7 Fix formatting in BUILD.md 2022-08-25 15:16:51 +02:00
ExzapandGitHub a3b9a45239 build.md: Vulkan SDK not necessary anymore 2022-08-25 12:28:38 +02:00
Marco RubinandGitHub 1d3f62a09c Fix ImGui::Text() format strings (#41)
* Fix format string
2022-08-25 12:15:02 +02:00
ExzapandGitHub 62ef3ea493 Merge pull request #39 from ArtemisX64/dev
Remove Vulkan SDK dependency with Vulkan headers and temporary fix for static assert in linux builds
2022-08-25 10:17:21 +02:00
ArtemisX64andGitHub 3d6d9341f6 Update precompiled.h 2022-08-25 16:46:34 +09:00
ArtemisX64andGitHub 3b2cab2cf4 Remove Vulkan SDK dependency 2022-08-25 13:43:04 +09:00
ArtemisX64 b1760c344c Remove .cache 2022-08-25 13:37:09 +09:00
ArtemisX64 c8d22473e1 Merge branch 'dev' of github.com:ArtemisX64/Cemu into dev 2022-08-25 13:35:08 +09:00
ArtemisX64 999c25db3c Replace Vulkan-SDK with Vulkan Headers 2022-08-25 13:32:31 +09:00
ArtemisX64 8b7738f0ab Replace Vulkan-SDK with Vulkan Headers 2022-08-25 13:31:32 +09:00
be0f062de8 .github: Add issue template and funding information (#28)
* .github: Add issue template

Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
2022-08-25 00:57:33 +02:00
Mike BoharsikandGitHub 98bfe57af0 Update BUILD.md to reference correct solution generation bat file path (#15) 2022-08-25 00:51:25 +02:00
ExzapandGitHub 1f86daa55d Add missing step in Linux build guide 2022-08-24 12:34:39 +02:00
illusion0001andGitHub cdba95d92f Ignore markdown files for CI build (#7)
* Ignore markdown files for CI build

* Consistent quotation marks
2022-08-24 11:30:16 +02:00
Maximilian Downey TwissandGitHub c41d57c456 Reformat CMakeSettings.json and remove empty variables (#4) 2022-08-24 11:22:13 +02:00
Maximilian Downey TwissandGitHub 5ae3c56de8 Use more consistent formatting in CMakeLists.txt (#2) 2022-08-24 08:32:04 +02:00
ExzapandGitHub ede1afd3ee CI: Remove unnecessary step to free space
There is currently an issue where building from scratch causes the Windows CI machine to run out of disk space. Since it works when the job is re-run with cached packages we'll just leave it at that for now
2022-08-24 08:28:06 +02:00
ExzapandGitHub 0507e1ac89 Pasted the wrong URL. Whoops 2022-08-24 06:55:46 +02:00
ExzapandGitHub 0e7389ee83 Add announcement post link to readme
Also testing CI builds with this commit
2022-08-24 06:48:07 +02:00
ExzapandGitHub 560a2e536f Tweak readme 2022-08-23 05:56:08 +02:00
CrementifandGitHub 736d529ea5 Expand readme with links and description 2022-08-23 02:37:05 +02:00
1505 changed files with 119033 additions and 54340 deletions
+66
View File
@@ -0,0 +1,66 @@
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeElse: true
BeforeWhile: true
SplitEmptyFunction: false
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCSpaceAfterProperty: false
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceBeforeCtorInitializerColon: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
TabWidth: 4
UseTab: Always
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Cemu Discord
url: https://discord.com/invite/5psYsup
about: If you need technical support with Cemu or have other questions the best place to ask is on the official Cemu Discord linked here
@@ -0,0 +1,69 @@
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Bug Report
description: Report an issue with Cemu emulator
title: "Enter a title for the bug report here"
labels: bug
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
If you discovered a bug you can report it here. Please make sure of the following first:
- That you are using the latest version of Cemu
- Only report something if you are sure it's a bug and not any technical issue on your end. For troubleshooting help see the [links page](https://github.com/cemu-project/Cemu#links)
- Problems specific to a single game should be reported on the [compatibility wiki](https://wiki.cemu.info/wiki/Main_Page) instead
- Verify that your problem isn't already mentioned on the [issue tracker](https://github.com/cemu-project/Cemu/issues)
Additionally, be aware that graphic packs can also causes issues. There is a separate issue tracker for graphic pack bugs over at the [graphic pack repository](https://github.com/cemu-project/cemu_graphic_packs)
- type: textarea
id: current_behavior
attributes:
label: Current Behavior
description: "What the bug is, in a brief description"
validations:
required: true
- type: textarea
id: expected_behavior
attributes:
label: Expected Behavior
description: "What did you expect to happen?"
validations:
required: true
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to Reproduce
description: "How to reproduce the issue"
validations:
required: true
- type: textarea
id: sys_info
attributes:
label: System Info (Optional)
description: "Your PC specifications. Usually only the operating system and graphics card is important. But feel free to add more info."
placeholder: |
Info
OS: Windows 10
GPU: NVIDIA GeForce RTX 4090
value: |
OS:
GPU:
- type: textarea
id: emulation_settings
attributes:
label: Emulation Settings (Optional)
description: |
Any non-default settings. You can leave this empty if you didn't change anything other than input settings.
validations:
required: false
- type: textarea
id: logs_files
attributes:
label: "Logs (Optional)"
description: |
"Attach `log.txt` from your Cemu folder (*File > Open Cemu folder*)".
validations:
required: false
@@ -0,0 +1,28 @@
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Feature suggestion
description: Suggest a new feature
title: "Enter a title for the suggestion here"
labels: feature request
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
While we appreciate suggestions, it is important to note that we are a very small team and there are already many more ideas than we could ever implement in the near future. Therefore, please only suggest something if you believe it is a great addition and the idea is reasonably unique.
*Avoid* to create suggestions for:
- Overly obvious features ("Game xyz does not work and should be fixed", "Wiimote support should be improved", "You should add an Android port", "Copy feature xyz from another emulator", "A button to pause/stop emulation")
- Niche features which are only interesting to a tiny percentage of users
- Large scale features ("Add a Metal backend for MacOS", "Add ARM support", "Add savestates")
Note that this doesn't mean we aren't interested in these ideas, but rather we likely have them planned anyway and it's mostly up to finding the time to implement them.
If you believe your idea is worthwhile even if it doesn't meet all the criteria above, you can still try suggesting it but we might close it.
- type: textarea
id: idea_suggestion
attributes:
label: Your suggestion
description: "Describe what your suggestion is in as much detail as possible"
validations:
required: true
@@ -0,0 +1,43 @@
name: Set up a vcpkg binary cache
description: Bootstraps vcpkg and configures GitHub Packages as a binary cache.
inputs:
github-token:
description: Token for authenticating with GitHub Packages
required: true
runs:
using: composite
steps:
- name: Bootstrap vcpkg
shell: bash
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
./dependencies/vcpkg/bootstrap-vcpkg.bat
else
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
fi
- name: Setup NuGet Credentials for vcpkg
shell: bash
run: |
function vcpkg_nuget() {
if [ "$RUNNER_OS" == "Windows" ]; then
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` "$@"
else
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` "$@"
fi
}
vcpkg_nuget \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ inputs.github-token }}"
vcpkg_nuget \
setapikey "${{ inputs.github-token }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
-9
View File
@@ -1,9 +0,0 @@
#include <stdio.h>
#include "./../src/Common/version.h"
// output current Cemu version for CI workflow. Do not modify
int main()
{
printf("%d.%d", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR);
return 0;
}
+264 -185
View File
@@ -1,202 +1,281 @@
name: Build Cemu
on:
pull_request_target:
types:
- opened
- synchronize
- reopened
push:
branches:
- main
workflow_call:
inputs:
deploymode:
required: false
type: string
workflow_dispatch:
env:
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite"
jobs:
build-ubuntu:
runs-on: ubuntu-20.04
env:
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
install_vulkan_version: "1.3.216.0"
runs-on: ubuntu-22.04
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" >> $GITHUB_ENV
echo "Build mode is release"
- name: "Checkout repo"
uses: actions/checkout@v5
with:
submodules: "recursive"
fetch-depth: 0
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
run: |
echo "BUILD_MODE=debug" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is debug"
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y ninja-build cmake libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm
wget https://sdk.lunarg.com/sdk/download/${{ env.install_vulkan_version }}/linux/vulkansdk-linux-x86_64-${{ env.install_vulkan_version }}.tar.gz -q -O vulkansdk.tar.gz
mkdir -p "${{ env.install_vulkan_folder }}"
tar -xf vulkansdk.tar.gz --directory ${{ env.install_vulkan_folder }}
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev
- name: "Setup cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: "cmake"
run: |
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: mv bin/Cemu_release bin/Cemu
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-linux-x64
path: ./bin/Cemu
build-appimage:
runs-on: ubuntu-22.04
needs: build-ubuntu
steps:
- name: Checkout Upstream Repo
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: bin
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev
- name: "Build AppImage"
run: |
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export DEPLOY_GTK_VERSION=3
dist/linux/appimage.sh
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-appimage-x64
path: artifacts
- name: "Bootstrap vcpkg"
run: |
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
mkdir -p build
cd build
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
- name: "Build Cemu"
run: |
cd build
ninja
- name: Upload artifact
uses: actions/upload-artifact@v3
if: ${{ inputs.deploymode == 'release' }}
with:
name: cemu-bin-linux-x64
path: ./bin/Cemu
build-windows:
runs-on: windows-2022
env:
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
install_vulkan_version: "1.3.216.0"
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
run: |
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
run: |
echo "BUILD_MODE=debug" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is debug"
- name: Prepare Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.0
with:
vulkan-query-version: 1.3.216.0
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: false
- name: Workaround
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToRemove= @(
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64.Spectre"
)
[string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
# should be run twice
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Configure MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64
toolset: 14.33.31629
spectre: false
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is release"
- name: "Bootstrap vcpkg"
run: |
./dependencies/vcpkg/bootstrap-vcpkg.bat
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
mkdir -p build
cd build
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }}
- name: "Free up space"
run: |
Remove-Item './dependencies/vcpkg/downloads' -Recurse
- name: "Build Cemu"
run: |
cd build
cmake --build . --config ${{ env.BUILD_MODE }} -j 2
- name: Upload artifact
uses: actions/upload-artifact@v3
if: ${{ inputs.deploymode == 'release' }}
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: "Setup cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: "cmake"
run: |
mkdir -p build
cd build
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
- name: "Build Cemu"
run: |
cd build
cmake --build . --config ${{ env.BUILD_MODE }}
- name: Prepare artifact
run: Rename-Item bin/Cemu_release.exe Cemu.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
build-macos:
runs-on: macos-14
strategy:
matrix:
arch: [x86_64, arm64]
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
brew update
brew install ninja nasm automake libtool
- name: "Install molten-vk"
run: |
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.3.0/MoltenVK-macos.tar
tar xf MoltenVK-macos.tar
sudo mkdir -p /usr/local/lib
sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
- name: "Setup cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: "cmake"
run: |
mkdir build
cd build
cmake .. ${{ env.BUILD_FLAGS }} \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
-DMACOS_BUNDLE=ON \
-G Ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: |
mkdir bin/Cemu_app
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
ln -s /Applications bin/Cemu_app/Applications
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
rm bin/tmp.dmg
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-macos-${{ matrix.arch }}
path: ./bin/Cemu.dmg
build-android:
runs-on: ubuntu-22.04
steps:
- name: Checkout repo
uses: actions/checkout@v5
with:
submodules: "recursive"
fetch-depth: 0
- name: Install system dependencies
run: |
sudo apt update -qq
sudo apt install -y gettext
- name: Uncompile message catalogs
run: |
for mo_file in bin/resources/*/cemu.mo
do
echo $mo_file
language_code=$(basename $(dirname $mo_file))
po_file=src/android/app/src/main/assets/translations/$language_code/cemu.po
mkdir -p $(dirname $po_file)
msgunfmt $mo_file -o $po_file || echo "Failed to uncompile message catalog from $mo_file"
done
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Build Cemu
env:
ANDROID_STORE_FILE_BASE64: ${{ secrets.ANDROID_STORE_FILE_BASE64 }}
ANDROID_KEY_STORE_PASSWORD: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
EMULATOR_VERSION_MAJOR: ${{ inputs.next_version_major }}
EMULATOR_VERSION_MINOR: ${{ inputs.next_version_minor }}
run: |
export JAVA_HOME=$JAVA_HOME_17_X64
cd ./src/android
if [[ -n "$ANDROID_STORE_FILE_BASE64" ]]; then
base64 --decode <<< "${ANDROID_STORE_FILE_BASE64}" > store.jks
export ANDROID_STORE_FILE=$(pwd)/store.jks
echo "Android signing store file has been set up."
else
echo "No Android signing store file provided. The APK will not be signed with a release key."
fi
./gradlew assembleRelease
./gradlew testRelease
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-android
path: ./src/android/app/build/outputs/apk/*/*.apk
+20
View File
@@ -0,0 +1,20 @@
name: Build check
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
build:
uses: ./.github/workflows/build.yml
secrets: inherit
+172
View File
@@ -0,0 +1,172 @@
name: Build vcpkg Android Dependencies
on:
workflow_dispatch:
jobs:
build-vcpkg-android:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install CMake
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build
- name: Setup Android NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r29
add-to-path: true
- name: Cache vcpkg
uses: actions/cache@v4
with:
path: |
dependencies/vcpkg/installed
dependencies/vcpkg/buildtrees
dependencies/vcpkg/packages
key: vcpkg-android-arm64-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-android-arm64-
- name: Bootstrap vcpkg
run: |
cd dependencies/vcpkg
./bootstrap-vcpkg.sh
- name: Build vcpkg dependencies for arm64-v8a
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
VCPKG_ROOT: ${{ github.workspace }}/dependencies/vcpkg
run: |
cd dependencies/vcpkg
# Install dependencies for Android arm64-v8a
./vcpkg install \
--triplet=arm64-android \
--overlay-ports=${{ github.workspace }}/dependencies/vcpkg_overlay_ports \
--x-manifest-root=${{ github.workspace }} \
--x-install-root=${{ github.workspace }}/dependencies/vcpkg/installed
- name: Package vcpkg installed directory
run: |
cd dependencies/vcpkg
tar -czf vcpkg-android-arm64.tar.gz installed/arm64-android
- name: Upload vcpkg dependencies artifact
uses: actions/upload-artifact@v4
with:
name: vcpkg-android-arm64
path: dependencies/vcpkg/vcpkg-android-arm64.tar.gz
retention-days: 30
- name: Create installation instructions
run: |
cat > VCPKG_INSTALL_INSTRUCTIONS.md << 'EOF'
# vcpkg Android Dependencies Installation
## ABI: arm64-v8a (arm64-android triplet)
### Installation Steps:
1. Download the artifact `vcpkg-android-arm64.tar.gz` from the workflow run
2. Extract to your local repository:
**On Linux/macOS:**
```bash
cd /path/to/WeeU
tar -xzf vcpkg-android-arm64.tar.gz -C dependencies/vcpkg/
```
**On Windows (PowerShell):**
```powershell
cd C:\path\to\WeeU
tar -xzf vcpkg-android-arm64.tar.gz -C dependencies\vcpkg\
```
**On Windows (using 7-Zip or WinRAR):**
- Extract the .tar.gz file to get the .tar file
- Extract the .tar file
- Copy the `installed` folder to `dependencies\vcpkg\`
3. The dependencies will be extracted to:
```
dependencies/vcpkg/installed/arm64-android/
```
4. You can now build the Android app locally without vcpkg downloading dependencies:
**On Linux/macOS:**
```bash
cd src/android
./gradlew assembleRelease
```
**On Windows:**
```powershell
cd src\android
.\gradlew.bat assembleRelease
```
### What's included:
- All vcpkg dependencies specified in vcpkg.json for Android
- Pre-built libraries for arm64-v8a architecture (works on all platforms)
- Headers and CMake configuration files
- Boost, OpenSSL, libzip, curl, and all other dependencies
### Platform Compatibility:
- ✅ **Windows**: Fully supported - Android NDK builds work the same
- ✅ **Linux**: Fully supported
- ✅ **macOS**: Fully supported
- The dependencies are cross-platform because they're for Android target, not host OS
### Notes:
- This is for arm64-v8a only (the only ABI configured in the project)
- Dependencies are cached and will be reused if vcpkg.json hasn't changed
- Total size is approximately 500MB-1GB compressed
- Works on Windows, Linux, and macOS because Android builds are cross-platform
### Requirements:
- Android NDK r28 (or compatible version)
- CMake 3.25+
- Java 21+
### Troubleshooting:
**On Windows:**
- If build fails, ensure the extracted path matches: `dependencies\vcpkg\installed\arm64-android\`
- Verify extraction: `dir dependencies\vcpkg\installed\arm64-android\`
- Make sure you have Android NDK installed via Android Studio or standalone
- Set ANDROID_NDK_HOME environment variable if needed
**On Linux/macOS:**
- If build fails, ensure the extracted path matches: `dependencies/vcpkg/installed/arm64-android/`
- Verify extraction: `ls -la dependencies/vcpkg/installed/arm64-android/`
- Make sure you have Android NDK r28 installed
**General:**
- Clear the vcpkg cache if you encounter issues: `rm -rf dependencies/vcpkg/installed` (or `rmdir /s dependencies\vcpkg\installed` on Windows)
- The Android build uses CMake which is cross-platform
- Dependencies are built for Android ARM64, not your host OS
EOF
- name: Upload installation instructions
uses: actions/upload-artifact@v4
with:
name: vcpkg-installation-instructions
path: VCPKG_INSTALL_INSTRUCTIONS.md
retention-days: 30
-69
View File
@@ -1,69 +0,0 @@
name: Create new release
on:
workflow_dispatch:
inputs:
PlaceholderInput:
description: PlaceholderInput
required: false
jobs:
call-release-build:
uses: ./.github/workflows/build.yml
with:
deploymode: release
deploy:
name: Deploy release
runs-on: ubuntu-20.04
needs: call-release-build
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v3
with:
name: cemu-bin-linux-x64
path: cemu-bin-linux-x64
- uses: actions/download-artifact@v3
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- name: Initialize
run: |
mkdir upload
sudo apt update -qq
sudo apt install -y zip
- name: Get Cemu release version
run: |
gcc -o getversion .github/getversion.cpp
echo "Cemu CI version: $(./getversion)"
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)" >> $GITHUB_ENV
echo "CEMU_VERSION=$(./getversion)" >> $GITHUB_ENV
- name: Create appimage
run: |
echo "to do"
- name: Create release from windows-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from ubuntu-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-20.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
ghr_v0.15.0_linux_amd64/ghr -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "Changelog:" v${{ env.CEMU_VERSION }} ./upload
+160
View File
@@ -0,0 +1,160 @@
name: Deploy release
on:
workflow_dispatch:
inputs:
changelog0:
description: 'Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash.'
required: true
type: string
changelog1:
description: 'Feature 2'
required: false
type: string
changelog2:
description: 'Feature 3'
required: false
type: string
changelog3:
description: 'Feature 4'
required: false
type: string
changelog4:
description: 'Feature 5'
required: false
type: string
changelog5:
description: 'Feature 6'
required: false
type: string
changelog6:
description: 'Feature 7'
required: false
type: string
changelog7:
description: 'Feature 8'
required: false
type: string
changelog8:
description: 'Feature 9'
required: false
type: string
android_build_type:
description: 'Build type'
required: false
type: string
jobs:
calculate-version:
name: Calculate Version
uses: ./.github/workflows/determine_release_version.yml
call-release-build:
uses: ./.github/workflows/build.yml
needs: calculate-version
secrets: inherit
with:
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
android_build_type: ${{ inputs.android_build_type }}
deploy:
name: Deploy release
runs-on: ubuntu-22.04
needs: [call-release-build, calculate-version]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate changelog
id: generate_changelog
run: |
CHANGELOG=""
if [ -n "${{ github.event.inputs.changelog0 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog0 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog1 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog1 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog2 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog2 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog3 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog3 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog4 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog4 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog5 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog5 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
echo -e "$CHANGELOG"
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: cemu-bin-linux-x64
- uses: actions/download-artifact@v4
with:
name: cemu-appimage-x64
path: cemu-appimage-x64
- uses: actions/download-artifact@v4
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v4
with:
pattern: cemu-bin-macos*
path: cemu-macos
- name: Initialize
run: |
mkdir upload
sudo apt install zip
- name: Set version dependent vars
run: |
echo "Version: ${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
- name: Create release from windows-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create appimage
run: |
VERSION=${{ env.CEMU_VERSION }}
echo "Cemu Version is $VERSION"
ls cemu-appimage-x64
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
- name: Create release from linux-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-22.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: |
cd cemu-macos
for bin_dir in cemu-bin-macos-*; do
arch="${bin_dir##cemu-bin-macos-}"
cp $bin_dir/Cemu.dmg ../upload/cemu-${{ env.CEMU_VERSION }}-macos-12-$arch.dmg
done
- name: Create release from android-bin
run: cp cemu-bin-android/*.apk upload/cemu-${{ env.CEMU_VERSION }}.apk
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g')
RELEASE_BODY=$(printf "%s\n%s" \
"**Changelog:**" \
"$CHANGELOG_UNESCAPED")
ghr_v0.15.0_linux_amd64/ghr -draft -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "$RELEASE_BODY" "v${{ env.CEMU_VERSION }}" ./upload
@@ -0,0 +1,74 @@
name: Calculate Next Version from release history
on:
workflow_dispatch:
workflow_call:
outputs:
next_version:
description: "The next semantic version"
value: ${{ jobs.calculate-version.outputs.next_version }}
next_version_major:
description: "The next semantic version (major)"
value: ${{ jobs.calculate-version.outputs.next_version_major }}
next_version_minor:
description: "The next semantic version (minor)"
value: ${{ jobs.calculate-version.outputs.next_version_minor }}
jobs:
calculate-version:
runs-on: ubuntu-latest
outputs:
next_version: ${{ steps.calculate_next_version.outputs.next_version }}
next_version_major: ${{ steps.calculate_next_version.outputs.next_version_major }}
next_version_minor: ${{ steps.calculate_next_version.outputs.next_version_minor }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Get all releases
id: get_all_releases
run: |
# Fetch all releases and check for API errors
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/cemu-project/cemu/releases?per_page=100")
if [ "$RESPONSE" -ne 200 ]; then
echo "Failed to fetch releases. HTTP status: $RESPONSE"
cat response.json
exit 1
fi
# Extract and sort tags
ALL_TAGS=$(jq -r '.[].tag_name' response.json | grep -E '^v[0-9]+\.[0-9]+(-[0-9]+)?$' | sed 's/-.*//' | sort -V | tail -n 1)
# Exit if no tags were found
if [ -z "$ALL_TAGS" ]; then
echo "No valid tags found."
exit 1
fi
echo "::set-output name=tag::$ALL_TAGS"
# echo "tag=$ALL_TAGS" >> $GITHUB_STATE
- name: Calculate next semver minor
id: calculate_next_version
run: |
LATEST_VERSION=${{ steps.get_all_releases.outputs.tag }}
# strip 'v' prefix and split into major.minor
LATEST_VERSION=${LATEST_VERSION//v/}
IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
# increment the minor version
MINOR=$((MINOR + 1))
NEXT_VERSION="${MAJOR}.${MINOR}"
echo "Major: $MAJOR"
echo "Minor: $MINOR"
echo "Next version: $NEXT_VERSION"
echo "::set-output name=next_version::$NEXT_VERSION"
echo "::set-output name=next_version_major::$MAJOR"
echo "::set-output name=next_version_minor::$MINOR"
+55
View File
@@ -0,0 +1,55 @@
name: Generate translation template
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
generate-pot:
runs-on: ubuntu-latest
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
- name: "Install gettext"
run: |
sudo apt update -qq
sudo apt install -y gettext
- name: "Generate POT file using xgettext"
run: >
find src -name *.cpp -o -name *.hpp -o -name *.h |
xargs xgettext --from-code=utf-8 -w 100
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
--keyword="_tr" --keyword="TR_NOOP"
--check=space-ellipsis --omit-header
-o cemu_cpp.pot
- name: "Generate POT file from the Android App"
run: |
cemu_dir=$(pwd)
cd src/android/app
./gradlew gettext
mv cemu_kt.pot "$cemu_dir"
- name: "Combine the POT files"
run: |
xgettext cemu_cpp.pot cemu_kt.pot --omit-header -o cemu.pot
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: POT file
path: ./cemu.pot
if-no-files-found: error
+40 -2
View File
@@ -13,10 +13,48 @@
*.out
*.app
.vs
.vscode
.idea/
build/
build_arm
cmake-build-*/
out/
.cache/
bin/Cemu_*
bin/Cemu_*.exe
# Cemu bin files
otp.bin
seeprom.bin
bin/otp.bin
bin/seeprom.bin
bin/log.txt
bin/Cemu_*.pdb
bin/Cemu_*.ilk
bin/Cemu.exe.backup
bin/mlc01/*
bin/settings.xml
bin/network_services.xml
bin/title_list_cache.xml
bin/debugger/*
bin/sdcard/*
bin/screenshots/*
bin/dump/*
bin/cafeLibs/*
bin/portable/*
bin/keys.txt
!bin/shaderCache/info.txt
bin/shaderCache/*
bin/controllerProfiles/*
!bin/gameProfiles/default/*
bin/gameProfiles/*
bin/graphicPacks/*
# Ignore Finder view option files created by OS X
.DS_Store
.kilocode/mcp.json
vcpkg-android-arm64.tar.gz
src/android/app/src/main/assets/COVER_DOWNLOAD_README.md
+19
View File
@@ -9,4 +9,23 @@
[submodule "dependencies/vcpkg"]
path = dependencies/vcpkg
url = https://github.com/microsoft/vcpkg
shallow = false
[submodule "dependencies/Vulkan-Headers"]
path = dependencies/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers
shallow = true
[submodule "dependencies/imgui"]
path = dependencies/imgui
url = https://github.com/ocornut/imgui
shallow = true
[submodule "dependencies/xbyak_aarch64"]
path = dependencies/xbyak_aarch64
url = https://github.com/fujitsu/xbyak_aarch64
[submodule "dependencies/libadrenotools"]
path = dependencies/libadrenotools
url = https://github.com/bylaws/libadrenotools
shallow = true
[submodule "dependencies/libucontext/libucontext"]
path = dependencies/libucontext/src
url = https://github.com/kaniini/libucontext
shallow = true
+273
View File
@@ -0,0 +1,273 @@
# Build Instructions
## Table of Contents
- [Windows](#windows)
- [Linux](#linux)
- [Dependencies](#dependencies)
- [For Arch and derivatives:](#for-arch-and-derivatives)
- [For Debian, Ubuntu and derivatives](#for-debian-ubuntu-and-derivatives)
- [For Fedora and derivatives:](#for-fedora-and-derivatives)
- [Build Cemu](#build-cemu)
- [CMake and Clang](#cmake-and-clang)
- [GCC](#gcc)
- [Debug Build](#debug-build)
- [Troubleshooting Steps](#troubleshooting-steps)
- [Compiling Errors](#compiling-errors)
- [Building Errors](#building-errors)
- [macOS](#macos)
- [Installing brew](#installing-brew)
- [Installing Tool Dependencies](#installing-tool-dependencies)
- [Installing Library Dependencies](#installing-library-dependencies)
- [Build Cemu using CMake](#build-cemu-using-cmake)
- [Android](#android)
- [FreeBSD](#freebsd)
- [Installing Dependencies](#installing-dependencies)
- [Build Cemu on BSD with CMake](#build-cemu-on-bsd-with-cmake)
- [Updating Cemu and source code](#updating-cemu-and-source-code)
## Windows
Prerequisites:
- git
- A recent version of Visual Studio 2022 with the following additional components:
- C++ CMake tools for Windows
- Windows 10/11 SDK
Instructions for Visual Studio 2022:
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
2. Open the newly created Cemu directory in Visual Studio using the "Open a local folder" option
3. In the menu select Project -> Configure CMake. Wait until it is done, this may take a long time
4. You can now build, run and debug Cemu
Any other IDE should also work as long as it has CMake and MSVC support. CLion and Visual Studio Code have been confirmed to work.
## Linux
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend.
### Dependencies
#### For Arch and derivatives:
`sudo pacman -S --needed base-devel bluez-libs clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
#### For Debian, Ubuntu and derivatives:
`sudo apt install -y cmake curl clang-15 freeglut3-dev git libbluetooth-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libtool nasm ninja-build`
You may also need to install `libusb-1.0-0-dev` as a workaround for an issue with the vcpkg hidapi package.
At Step 3 in [Build Cemu using cmake and clang](#build-cemu-using-cmake-and-clang), use the following command instead:
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
#### For Fedora and derivatives:
`sudo dnf install bluez-libs-devel clang cmake cubeb-devel freeglut-devel git glm-devel gtk3-devel kernel-headers libgcrypt-devel libsecret-devel libtool libusb1-devel llvm nasm ninja-build perl-core systemd-devel wayland-protocols-devel zlib-devel zlib-static`
### Build Cemu
#### CMake and Clang
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
#### GCC
If you are building using GCC, make sure you have g++ installed:
- Installation for Arch and derivatives: `sudo pacman -S gcc`
- Installation for Debian, Ubuntu and derivatives: `sudo apt install g++`
- Installation for Fedora and derivatives: `sudo dnf install gcc-c++`
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja
cmake --build build
```
#### Debug Build
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
If you are using GCC, replace `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja` with `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja`
#### Troubleshooting Steps
##### Compiling Errors
This section refers to running `cmake -S...` (truncated).
* `vcpkg install failed`
* Run the following in the root directory and try running the command again (don't forget to change directories afterwards):
* `cd dependencies/vcpkg && git fetch --unshallow`
* `Please ensure you're using the latest port files with git pull and vcpkg update.`
* Either:
* Update vcpkg by running by the following command:
* `git submodule update --remote dependencies/vcpkg`
* If you are sure vcpkg is up to date, check the following logs:
* `Cemu/dependencies/vcpkg/buildtrees/wxwidgets/config-x64-linux-out.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-meson-log.txt.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-out.log`
* Not able to find Ninja.
* Add the following and try running the command again:
* `-DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
* Compiling failed during the boost-build dependency.
* It means you don't have a working/good standard library installation. Check the integrity of your system headers and making sure that C++ related packages are installed and intact.
* Compiling failed during rebuild after `git pull` with an error that mentions RPATH
* Add the following and try running the command again:
* `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
* Environment variable `VCPKG_FORCE_SYSTEM_BINARIES` must be set.
* Execute the folowing and then try running the command again:
* `export VCPKG_FORCE_SYSTEM_BINARIES=1`
* If you are getting a random error, read the [package-name-and-platform]-out.log and [package-name-and-platform]-err.log for the actual reason to see if you might be lacking the headers from a dependency.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
##### Building Errors
This section refers to running `cmake --build build`.
* `main.cpp.o: in function 'std::__cxx11::basic_string...`
* You likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see [GCC](#gcc).
* `fatal error: 'span' file not found`
* You're either missing `libstdc++` or are using a version that's too old. Install at least v10 with your package manager, eg `sudo apt install libstdc++-10-dev`. See [#644](https://github.com/cemu-project/Cemu/issues/644).
* `undefined libdecor_xx`
* You are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
## macOS
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and below
don't support the C++20 feature set required, so either install LLVM from Homebrew or make sure that
you have a recent enough version of Xcode. Xcode 15 is known to work. The OpenGL graphics API isn't
supported on macOS, so Vulkan must be used through the Molten-VK compatibility layer.
### Installing brew
1. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
2. Set up the Homebrew shell environment:
1. **On an Intel Mac:** `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
2. **On an Apple Silicon Mac:** eval `"$(/opt/homebrew/bin/brew shellenv)"`
### Installing Tool Dependencies
The native versions of these can be used regardless of what type of Mac you have.
`brew install git cmake ninja nasm automake libtool`
### Installing Library Dependencies
**On Apple Silicon Macs, Rosetta 2 and the x86_64 version of Homebrew must be used to install these dependencies:**
1. `softwareupdate --install-rosetta` # Install Rosetta 2 if you don't have it. This only has to be done once
2. `arch -x86_64 zsh` # run an x64 shell
3. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
4. `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
Then install the dependencies:
`brew install boost molten-vk`
### Build Cemu using CMake
1. `git clone --recursive https://github.com/cemu-project/Cemu`
2. `cd Cemu`
3. `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_OSX_ARCHITECTURES=x86_64 -G Ninja`
4. `cmake --build build`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
#### Troubleshooting steps
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/local/bin/ninja` to the command and running it again.
## Android
Prerequisites:
- git
- [Android studio](https://developer.android.com/studio)
Instructions:
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
2. Open the project located in `src/android` in Android Studio
3. Click Build > Make Project
## FreeBSD
The following instructions to build Cemu on FreeBSD are experimental. Some features available on other platforms are not available on FreeBSD (discord rich presence, bluetooth/support for actual Wii U controllers, auto-updates, etc.)
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend. Any version of FreeBSD 13.3-RELEASE or higher comes bundled with LLVM > version 15 as part of the base system. However, if for whatever reason your system lacks a recent version of LLVM you can install one by executing:
`sudo pkg install llvm15`
Or a higher version as desired.
### Installing Dependencies
`sudo pkg install boost-libs cmake-core curl glslang gtk3 libzip ninja png pkgconf pugixml rapidjson sdl2 wayland wayland-protocols wx32-gtk3 xorg zstd`
### Build Cemu on BSD with CMake
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -B build -DCMAKE_BUILD_TYPE=release -DENABLE_BLUEZ=OFF -DENABLE_DISCORD_RPC=OFF -DENABLE_FERAL_GAMEMODE=OFF -DENABLE_HIDAPI=OFF -DENABLE_VCPKG=OFF -G Ninja
cmake --build build
cd build && ninja install
```
You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
## Updating Cemu and source code
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
- This should update your local copy of Cemu and all of its dependencies.
2. Then, you can rebuild Cemu using the steps listed above, according to whether you use Linux or Windows.
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
## CMake configure flags
Some flags can be passed during CMake configure to customise which features are enabled on build.
Example usage: `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DENABLE_SDL=ON -DENABLE_VULKAN=OFF`
### All platforms
| Flag | | Description | Default | Note |
|--------------------|:--|-----------------------------------------------------------------------------|---------|--------------------|
| ALLOW_PORTABLE | | Allow Cemu to use the `portable` directory to store configs and data | ON | |
| CEMU_CXX_FLAGS | | Flags passed straight to the compiler, e.g. `-march=native`, `-Wall`, `/W3` | "" | |
| ENABLE_CUBEB | | Enable cubeb audio backend | ON | |
| ENABLE_DISCORD_RPC | | Enable Discord Rich presence support | ON | |
| ENABLE_OPENGL | | Enable OpenGL graphics backend | ON | Currently required |
| ENABLE_HIDAPI | | Enable HIDAPI (used for Wiimote controller API) | ON | |
| ENABLE_SDL | | Enable SDLController controller API | ON | Currently required |
| ENABLE_VCPKG | | Use VCPKG package manager to obtain dependencies | ON | |
| ENABLE_VULKAN | | Enable the Vulkan graphics backend | ON | |
| ENABLE_WXWIDGETS | | Enable wxWidgets UI | ON | Currently required |
### Windows
| Flag | Description | Default | Note |
|--------------------|-----------------------------------|---------|--------------------|
| ENABLE_DIRECTAUDIO | Enable DirectAudio audio backend | ON | Currently required |
| ENABLE_DIRECTINPUT | Enable DirectInput controller API | ON | Currently required |
| ENABLE_XAUDIO | Enable XAudio audio backend | ON | |
| ENABLE_XINPUT | Enable XInput controller API | ON | |
### Linux
| Flag | Description | Default |
|-----------------------|----------------------------------------------------|---------|
| ENABLE_BLUEZ | Build with Bluez (used for Wiimote controller API) | ON |
| ENABLE_FERAL_GAMEMODE | Enable Feral Interactive GameMode support | ON |
| ENABLE_WAYLAND | Enable Wayland support | ON |
### macOS
| Flag | Description | Default |
|--------------|------------------------------------------------|---------|
| MACOS_BUNDLE | MacOS executable will be an application bundle | OFF |
+213 -71
View File
@@ -1,116 +1,258 @@
cmake_minimum_required(VERSION 3.21.1)
cmake_minimum_required(VERSION 3.25)
option(PUBLIC_RELEASE "Compile with debug asserts disabled and no console" OFF)
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
option(ALLOW_PORTABLE "Allow Cemu to be run in portable mode" ON)
if (PUBLIC_RELEASE)
add_definitions(-DPUBLIC_RELEASE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) # enable LTO
# used by CI script to set version:
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
set(EMULATOR_VERSION_MINOR "0" CACHE STRING "")
set(EMULATOR_VERSION_PATCH "0" CACHE STRING "")
execute_process(
COMMAND git log --format=%h -1
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
if (ENABLE_VCPKG)
# check if vcpkg is shallow and unshallow it if necessary
execute_process(
COMMAND git rev-parse --is-shallow-repository
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/vcpkg
OUTPUT_VARIABLE is_vcpkg_shallow
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(is_vcpkg_shallow STREQUAL "true")
message(STATUS "vcpkg is shallow. Unshallowing it now...")
execute_process(
COMMAND git fetch --unshallow
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/dependencies/vcpkg"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
)
endif()
if(UNIX AND NOT APPLE AND NOT VCPKG_TARGET_ANDROID)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
elseif(APPLE)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
else()
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_win;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
endif()
if(VCPKG_TARGET_ANDROID)
set(ENV{ANDROID_NDK_HOME} ${ANDROID_NDK})
set(ENV{VCPKG_ROOT} "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/vcpkg_android.cmake")
else()
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
endif()
# Set this so that all the various find_package() calls don't need an explicit
# CONFIG option
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
if (WIN32)
set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "")
endif()
endif()
if(WIN32)
set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "")
endif()
project(Cemu VERSION 2.0.0)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
project(Cemu VERSION 0.1)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
add_definitions(-DEMULATOR_VERSION_MAJOR=${EMULATOR_VERSION_MAJOR})
add_definitions(-DEMULATOR_VERSION_MINOR=${EMULATOR_VERSION_MINOR})
add_definitions(-DEMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
IF(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise") # floating point model: precise
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GT") # fiber safe optimizations
ENDIF()
# enable link time optimization for release builds
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
IF(MSVC AND PUBLIC_RELEASE)
message(STATUS "Using additional optimization flags for MSVC")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Oi /Ot") # enable intrinsic functions, favor speed
ENDIF()
if (MSVC)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
# floating point model: precise, fiber safe optimizations
add_compile_options(/EHsc /fp:precise)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Speeds up static linking (especially helpful in incremental compilation)
if((CMAKE_LINKER MATCHES ".*lld-link.*") AND (CMAKE_AR MATCHES ".*llvm-lib.*"))
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY STATIC_LIBRARY_OPTIONS /llvmlibthin)
endif()
else()
add_compile_options(/GT)
endif()
# enable additional optimization flags for release builds
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Oi>) # enable intrinsic functions
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Ot>) # favor speed
endif()
if (APPLE)
enable_language(OBJC OBJCXX)
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
endif()
if (UNIX AND NOT APPLE)
option(ENABLE_WAYLAND "Build with Wayland support" ON)
option(ENABLE_FERAL_GAMEMODE "Enables Feral Interactive GameMode Support" ON)
option(ENABLE_BLUEZ "Build with Bluez support" ON)
endif()
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
option(ENABLE_VULKAN "Enables the Vulkan backend" ON)
option(ENABLE_DISCORD_RPC "Enables the Discord Rich Presence feature" ON)
if(WIN32)
option(ENABLE_CEMUHOOK "Enables Cemuhook compatibility" ON)
endif()
# input backends
if(WIN32)
option(ENABLE_XINPUT "Enables the usage of XInput" ON)
option(ENABLE_DIRECTINPUT "Enables the usage of DirectInput" ON)
add_definitions(-DHAS_DIRECTINPUT)
if (WIN32)
option(ENABLE_XINPUT "Enables the usage of XInput" ON)
option(ENABLE_DIRECTINPUT "Enables the usage of DirectInput" ON)
add_compile_definitions(HAS_DIRECTINPUT)
endif()
option(ENABLE_HIDAPI "Build with HIDAPI" ON)
option(ENABLE_SDL "Enables the SDLController backend" ON)
# audio backends
if(WIN32)
option(ENABLE_DIRECTAUDIO "Enables the directaudio backend" ON)
option(ENABLE_XAUDIO "Enables the xaudio backend" ON)
if (WIN32)
option(ENABLE_DIRECTAUDIO "Enables the directaudio backend" ON)
option(ENABLE_XAUDIO "Enables the xaudio backend" ON)
endif()
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
find_package(SDL2 CONFIG REQUIRED)
find_package(CURL CONFIG REQUIRED)
find_package(pugixml CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)
find_package(RapidJSON CONFIG REQUIRED)
set(THREADS_PREFER_PTHREAD_FLAG true)
find_package(Threads REQUIRED)
if(ENABLE_SDL)
find_package(SDL2 REQUIRED)
add_compile_definitions("HAS_SDL=1")
endif()
find_package(CURL REQUIRED)
find_package(pugixml REQUIRED)
find_package(RapidJSON REQUIRED)
find_package(Boost COMPONENTS program_options filesystem nowide REQUIRED)
if(ANDROID)
find_package(Boost COMPONENTS context iostreams REQUIRED)
endif()
find_package(libzip REQUIRED)
find_package(glslang REQUIRED)
find_package(ZLIB REQUIRED)
find_package(zstd CONFIG REQUIRED)
find_package(zstd MODULE REQUIRED) # MODULE so that zstd::zstd is available
find_package(OpenSSL COMPONENTS Crypto SSL REQUIRED)
find_package(glm REQUIRED)
find_package(fmt 9 REQUIRED)
find_package(PNG REQUIRED)
if(ENABLE_VULKAN)
find_package(Vulkan REQUIRED)
include_directories("${Vulkan_INCLUDE_DIRS}")
endif()
if(ENABLE_OPENGL)
find_package(OpenGL REQUIRED)
endif()
if(ENABLE_DISCORD_RPC)
add_definitions(-DENABLE_DISCORD_RPC)
add_subdirectory(dependencies/discord-rpc EXCLUDE_FROM_ALL)
target_include_directories(discord-rpc INTERFACE ./dependencies/discord-rpc/include)
# glslang versions older than 11.11.0 define targets without a namespace
if (NOT TARGET glslang::SPIRV AND TARGET SPIRV)
add_library(glslang::SPIRV ALIAS SPIRV)
endif()
if(ENABLE_WXWIDGETS)
find_package(wxWidgets CONFIG REQUIRED)
if (UNIX AND NOT APPLE AND NOT ANDROID)
find_package(X11 REQUIRED)
if (ENABLE_WAYLAND)
find_package(Wayland REQUIRED Client)
find_package(WaylandScanner REQUIRED)
find_package(WaylandProtocols 1.15 REQUIRED)
ecm_add_wayland_client_protocol(WAYLAND_PROTOCOL_SRCS
PROTOCOL "${WaylandProtocols_DATADIR}/stable/viewporter/viewporter.xml"
BASENAME viewporter)
add_library(CemuWaylandProtocols STATIC ${WAYLAND_PROTOCOL_SRCS})
target_include_directories(CemuWaylandProtocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
target_include_directories(CemuWaylandProtocols PRIVATE ${Wayland_INCLUDE_DIRS})
add_compile_definitions(HAS_WAYLAND)
endif()
find_package(GTK3 REQUIRED)
if(ENABLE_BLUEZ)
find_package(bluez REQUIRED)
set(SUPPORTS_WIIMOTE ON)
add_compile_definitions(HAS_BLUEZ)
endif()
endif()
find_package(OpenSSL REQUIRED)
find_package(X11)
# find a better way to handle this
link_libraries(${Boost_LIBRARIES})
link_libraries(${X11_LIBRARIES})
link_libraries(SDL2::SDL2 SDL2::SDL2main SDL2::SDL2-static)
if(ENABLE_WXWIDGETS)
link_libraries(wx::core wx::base)
if (ENABLE_VULKAN)
include_directories("dependencies/Vulkan-Headers/include")
endif()
if(ENABLE_CUBEB)
option(BUILD_TESTS "" OFF)
option(BUILD_TOOLS "" OFF)
option(BUNDLE_SPEEX "" OFF)
set(USE_WINMM OFF CACHE BOOL "")
add_subdirectory(dependencies/cubeb)
set_property(TARGET cubeb PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
link_libraries(cubeb)
add_compile_definitions(HAS_CUBEB=1)
if (ENABLE_OPENGL)
find_package(OpenGL REQUIRED)
endif()
add_subdirectory(dependencies/ih264d)
add_subdirectory(dependencies/ZArchive)
if (ENABLE_DISCORD_RPC)
add_compile_definitions(ENABLE_DISCORD_RPC)
endif()
if (ENABLE_HIDAPI)
find_package(hidapi REQUIRED)
set(SUPPORTS_WIIMOTE ON)
add_compile_definitions(HAS_HIDAPI)
endif ()
if(UNIX AND NOT APPLE AND NOT ANDROID)
if(ENABLE_FERAL_GAMEMODE)
add_compile_definitions(ENABLE_FERAL_GAMEMODE)
add_subdirectory(dependencies/gamemode EXCLUDE_FROM_ALL)
target_include_directories(gamemode INTERFACE ./dependencies/gamemode/lib)
endif()
endif()
if (ENABLE_WXWIDGETS)
find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core gl propgrid xrc)
endif()
if (ENABLE_CUBEB)
if (NOT ENABLE_VCPKG)
find_package(cubeb)
endif()
if (NOT cubeb_FOUND)
option(BUILD_TESTS "" OFF)
option(BUILD_TOOLS "" OFF)
option(BUNDLE_SPEEX "" OFF)
set(USE_WINMM OFF CACHE BOOL "")
add_subdirectory("dependencies/cubeb" EXCLUDE_FROM_ALL SYSTEM)
set_property(TARGET cubeb PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
add_library(cubeb::cubeb ALIAS cubeb)
endif()
add_compile_definitions("HAS_CUBEB=1")
endif()
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
if (CMAKE_OSX_ARCHITECTURES)
set(CEMU_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
else()
set(CEMU_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
endif()
if(CEMU_ARCHITECTURE MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)")
add_subdirectory("dependencies/xbyak_aarch64" EXCLUDE_FROM_ALL)
endif()
find_package(ZArchive)
if (NOT ZArchive_FOUND)
add_subdirectory("dependencies/ZArchive" EXCLUDE_FROM_ALL)
endif()
if(ANDROID)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)")
add_subdirectory("dependencies/libadrenotools" EXCLUDE_FROM_ALL)
endif()
add_subdirectory("dependencies/libucontext" EXCLUDE_FROM_ALL)
add_subdirectory("dependencies/stb" EXCLUDE_FROM_ALL)
endif()
add_subdirectory(src)
+11 -20
View File
@@ -1,37 +1,28 @@
{
"configurations": [
{
"name": "x64-Debug",
"name": "RelWithDebInfo",
"configurationType": "RelWithDebInfo",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "x64-Release",
"name": "Release",
"configurationType": "Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ]
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "x64-Public-Release",
"name": "Debug",
"configurationType": "Debug",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "-DPUBLIC_RELEASE=ON",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ]
"installRoot": "${projectDir}\\out\\install\\${name}"
}
]
}
+100
View File
@@ -0,0 +1,100 @@
# Coding style guidelines for Cemu
This document describes the latest version of our coding-style guidelines. Since we did not use this style from the beginning, older code may not adhere to these guidelines. Nevertheless, use these rules even if the surrounding code does not match.
These coding-style guidelines apply only to the C/C++ codebase. For Kotlin, we follow the official Kotlin Coding Conventions as outlined in the [Kotlin documentation](https://kotlinlang.org/docs/coding-conventions.html).
Cemu comes with a `.clang-format` file which is supported by most IDEs for formatting. Avoid auto-reformatting whole files, PRs with a lot of formatting changes are difficult to review.
## Names for variables, functions and classes
- Always prefix class member variables with `m_`
- Always prefix static class variables with `s_`
- For variable names: Camel case, starting with a lower case letter after the prefix. Examples: `m_option`, `s_audioVolume`
- For functions/class names: Use camel case starting with a capital letter. Examples: `MyClass`, `SetActive`
- Avoid underscores in variable names after the prefix. Use `m_myVariable` instead of `m_my_variable`
## About types
Cemu provides its own set of basic fixed-width types. They are:
`uint8`, `sint8`, `uint16`, `sint16`, `uint32`, `sint32`, `uint64`, `sint64`. Always use these types over something like `uint32_t`. Using `size_t` is also acceptable where suitable. Avoid C types like `int` or `long`. The only exception is when interacting with external libraries which expect these types as parameters.
## When and where to put brackets
Always put curly-brackets (`{ }`) on their own line. Example:
```
void FooBar()
{
if (m_hasFoo)
{
...
}
}
```
As an exception, you can put short lambdas onto the same line:
```
SomeFunc([]() { .... });
```
You can skip brackets for single-statement `if`. Example:
```
if (cond)
action();
```
## Printing
Avoid sprintf and similar C-style formatting API. Use `fmt::format()`.
In UI related code you can use `formatWxString`, but be aware that number formatting with this function will be locale dependent!
## Strings and encoding
We use UTF-8 encoded `std::string` where possible. Some conversions need special handling and we have helper functions for those:
```cpp
// std::filesystem::path <-> std::string (in precompiled.h)
std::string _pathToUtf8(const fs::path& path);
fs::path _utf8ToPath(std::string_view input);
// wxString <-> std::string
wxString wxString::FromUTF8(const std::string& s)
wxString to_wxString(std::string_view str); // in gui/helpers.h
std::string wxString::utf8_string();
```
## Logging
If you want to write to log.txt use `cemuLog_log()`. The log type parameter should be mostly self-explanatory. Use `LogType::Force` if you always want to log something. For example:
`cemuLog_log(LogType::Force, "The value is {}", 123);`
## HLE and endianness
A pretty large part of Cemu's code base are re-implementations of various Cafe OS modules (e.g. `coreinit.rpl`, `gx2.rpl`...). These generally run in the context of the emulated process, thus special care has to be taken to use types with the correct size and endianness when interacting with memory.
Keep in mind that the emulated Espresso CPU is 32bit big-endian, while the host architectures targeted by Cemu are 64bit little-endian!
To keep code simple and remove the need for manual endian-swapping, Cemu has templates and aliases of the basic types with explicit endian-ness.
For big-endian types add the suffix `be`. Example: `uint32be`
When you need to store a pointer in the guest's memory. Use `MEMPTR<T>`. It will automatically store any pointer as 32bit big-endian. The pointer you store must point to memory that is within the guest address space.
## HLE interfaces
The implementation for each HLE module is inside a namespace with a matching name. E.g. `coreinit.rpl` functions go into `coreinit` namespace.
To expose a new function as callable from within the emulated machine, use `cafeExportRegister` or `cafeExportRegisterFunc`. Here is a short example:
```cpp
namespace coreinit
{
uint32 OSGetCoreCount()
{
return Espresso::CORE_COUNT;
}
void Init()
{
cafeExportRegister("coreinit", OSGetCoreCount, LogType::CoreinitThread);
}
}
```
You may also see some code which uses `osLib_addFunction` directly. This is a deprecated way of registering functions.
View File

Some files were not shown because too many files have changed in this diff Show More