437 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
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
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
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
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
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
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
SSimco 92f7342fbd Fix typo 2024-07-28 10:23:46 +03:00
SSimco 30a1221067 Refactor code 2024-07-27 22:56:44 +03: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
SSimco bab67d7df0 Use tick effect 2024-05-28 09:32:38 +03: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
SSimco 9760bafb8a Fix crash in graphic packs fragment 2024-04-09 08:13:09 +03: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
SSimco 275a46f97f Replace x86 intrinsics with sse2neon on arm64 & refactor code 2024-02-21 20:31:10 +02: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
SSimco 8e666d32d0 Added libucontext for android & replaced x86 intrinsics with sse2neon implementations 2023-12-27 16:14:44 +02: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
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
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
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
SSimco fb87aa7261 Add option to search for games 2023-07-06 06:53:56 +03: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
SSimco 8006ec36ef Create TV audio device at the start of the application 2023-06-22 13:18:03 +03: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
SSimco f60abeddcd Add support for reading game files using SAF 2023-06-17 23:19:17 +03: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
Exzap 3590ad9099 PPCRec: Implement MFCR and MTCRF 2023-03-13 05:10:44 +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
825 changed files with 69027 additions and 30183 deletions
@@ -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"
+225 -207
View File
@@ -1,263 +1,281 @@
name: Build Cemu
on:
workflow_call:
inputs:
next_version_major:
required: false
type: string
next_version_minor:
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-22.04
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
fetch-depth: 0
- name: "Checkout repo"
uses: actions/checkout@v5
with:
submodules: "recursive"
fetch-depth: 0
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- 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: 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
- 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 cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: "Bootstrap vcpkg"
run: |
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- 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: |
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: "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: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: mv bin/Cemu_release bin/Cemu
- 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
- 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
- name: Checkout Upstream Repo
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: bin
- 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
- 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: "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: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-appimage-x64
path: artifacts
build-windows:
runs-on: windows-2022
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- 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: 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: 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 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 cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: "Bootstrap vcpkg"
run: |
./dependencies/vcpkg/bootstrap-vcpkg.bat
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- 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
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: "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: "Build Cemu"
run: |
cd build
cmake --build . --config ${{ env.BUILD_MODE }}
- name: Prepare artifact
run: Rename-Item bin/Cemu_release.exe Cemu.exe
- 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
- 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: "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 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: 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 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.2.9/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: "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 cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.29.0"
- name: "Bootstrap vcpkg"
run: |
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: Setup vcpkg binary cache
uses: ./.github/actions/set-up-vcpkg-binary-cache-action
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- 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: |
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: "cmake"
run: |
mkdir build
cd build
cmake .. ${{ env.BUILD_FLAGS }} \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DMACOS_BUNDLE=ON \
-G Ninja
- name: "Build Cemu"
run: |
cmake --build build
- 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: 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
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-macos-x64
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
+2
View File
@@ -1,5 +1,6 @@
name: Build check
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "*.md"
@@ -16,3 +17,4 @@ on:
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
@@ -1,4 +1,4 @@
name: Deploy experimental release
name: Deploy release
on:
workflow_dispatch:
inputs:
@@ -38,8 +38,8 @@ on:
description: 'Feature 9'
required: false
type: string
changelog9:
description: 'Feature 10'
android_build_type:
description: 'Build type'
required: false
type: string
@@ -50,11 +50,13 @@ jobs:
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 experimental release
name: Deploy release
runs-on: ubuntu-22.04
needs: [call-release-build, calculate-version]
steps:
@@ -75,7 +77,6 @@ jobs:
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
if [ -n "${{ github.event.inputs.changelog9 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog9 }}\n"; fi
echo -e "$CHANGELOG"
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
- uses: actions/download-artifact@v4
@@ -95,8 +96,8 @@ jobs:
- uses: actions/download-artifact@v4
with:
name: cemu-bin-macos-x64
path: cemu-bin-macos-x64
pattern: cemu-bin-macos*
path: cemu-macos
- name: Initialize
run: |
@@ -137,7 +138,15 @@ jobs:
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: cp cemu-bin-macos-x64/Cemu.dmg upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.dmg
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: |
@@ -1,85 +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@v3
- 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:
name: cemu-bin-macos-x64
path: cemu-bin-macos-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 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 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 from macos-bin
run: cp cemu-bin-macos-x64/Cemu.dmg upload/cemu-${{ env.CEMU_VERSION }}-macos-12-x64.dmg
- 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
@@ -29,7 +29,7 @@ jobs:
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/${{ github.repository }}/releases?per_page=100")
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
+16 -3
View File
@@ -1,6 +1,7 @@
name: Generate translation template
on:
workflow_dispatch:
pull_request:
paths-ignore:
- "*.md"
@@ -19,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: "Install gettext"
run: |
@@ -31,11 +32,23 @@ jobs:
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.pot
-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@v3
uses: actions/upload-artifact@v4
with:
name: POT file
path: ./cemu.pot
+4
View File
@@ -17,6 +17,7 @@
.idea/
build/
build_arm
cmake-build-*/
out/
.cache/
@@ -54,3 +55,6 @@ 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
+11
View File
@@ -18,3 +18,14 @@
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
+85 -3
View File
@@ -20,6 +20,10 @@
- [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
@@ -46,10 +50,10 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
### Dependencies
#### For Arch and derivatives:
`sudo pacman -S --needed base-devel clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
`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 libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libtool nasm ninja-build`
`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.
@@ -57,7 +61,7 @@ At Step 3 in [Build Cemu using cmake and clang](#build-cemu-using-cmake-and-clan
`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 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 zlib-devel zlib-static`
`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
@@ -120,6 +124,9 @@ This section refers to running `cmake -S...` (truncated).
* 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.
@@ -182,6 +189,43 @@ Then install the dependencies:
#### 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.
@@ -189,3 +233,41 @@ Then install the dependencies:
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 |
+51 -32
View File
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.21.1)
cmake_minimum_required(VERSION 3.25)
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)
# used by CI script to set version:
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
@@ -35,15 +36,22 @@ if (ENABLE_VCPKG)
)
endif()
if(UNIX AND NOT APPLE)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux")
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")
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")
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(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
# Set this so that all the various find_package() calls don't need an explicit
# CONFIG option
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
@@ -98,6 +106,7 @@ 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)
@@ -122,32 +131,21 @@ if (WIN32)
endif()
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
# usb hid backends
if (WIN32)
option(ENABLE_NSYSHID_WINDOWS_HID "Enables the native Windows HID backend for nsyshid" ON)
endif ()
# libusb and windows hid backends shouldn't be active at the same time; otherwise we'd see all devices twice!
if (NOT ENABLE_NSYSHID_WINDOWS_HID)
option(ENABLE_NSYSHID_LIBUSB "Enables the libusb backend for nsyshid" ON)
else ()
set(ENABLE_NSYSHID_LIBUSB OFF CACHE BOOL "" FORCE)
endif ()
if (ENABLE_NSYSHID_WINDOWS_HID)
add_compile_definitions(NSYSHID_ENABLE_BACKEND_WINDOWS_HID)
endif ()
if (ENABLE_NSYSHID_LIBUSB)
add_compile_definitions(NSYSHID_ENABLE_BACKEND_LIBUSB)
endif ()
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
set(THREADS_PREFER_PTHREAD_FLAG true)
find_package(Threads REQUIRED)
find_package(SDL2 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)
@@ -162,7 +160,7 @@ if (NOT TARGET glslang::SPIRV AND TARGET SPIRV)
add_library(glslang::SPIRV ALIAS SPIRV)
endif()
if (UNIX AND NOT APPLE)
if (UNIX AND NOT APPLE AND NOT ANDROID)
find_package(X11 REQUIRED)
if (ENABLE_WAYLAND)
find_package(Wayland REQUIRED Client)
@@ -174,11 +172,17 @@ if (UNIX AND NOT APPLE)
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()
if (ENABLE_VULKAN)
@@ -191,17 +195,15 @@ endif()
if (ENABLE_DISCORD_RPC)
add_compile_definitions(ENABLE_DISCORD_RPC)
add_subdirectory(dependencies/discord-rpc EXCLUDE_FROM_ALL)
target_include_directories(discord-rpc INTERFACE ./dependencies/discord-rpc/include)
endif()
if (ENABLE_HIDAPI)
find_package(hidapi REQUIRED)
set(ENABLE_WIIMOTE ON)
set(SUPPORTS_WIIMOTE ON)
add_compile_definitions(HAS_HIDAPI)
endif ()
if(UNIX AND NOT APPLE)
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)
@@ -210,7 +212,7 @@ if(UNIX AND NOT APPLE)
endif()
if (ENABLE_WXWIDGETS)
find_package(wxWidgets 3.2 REQUIRED COMPONENTS base core gl propgrid xrc)
find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core gl propgrid xrc)
endif()
if (ENABLE_CUBEB)
@@ -231,9 +233,26 @@ 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)
+1
View File
@@ -2,6 +2,7 @@
# 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.
+7 -47
View File
@@ -1,54 +1,14 @@
# **Cemu - Wii U emulator**
# **Cemu - Android Port (Wii U Emulator)**
[![Build Process](https://github.com/cemu-project/Cemu/actions/workflows/build.yml/badge.svg)](https://github.com/cemu-project/Cemu/actions/workflows/build.yml)
[![Discord](https://img.shields.io/discord/286429969104764928?label=Cemu&logo=discord&logoColor=FFFFFF)](https://discord.gg/5psYsup)
[![Matrix Server](https://img.shields.io/matrix/cemu:cemu.info?server_fqdn=matrix.cemu.info&label=cemu:cemu.info&logo=matrix&logoColor=FFFFFF)](https://matrix.to/#/#cemu:cemu.info)
This is the Android port of **Cemu**, a Wii U emulator written in C/C++.
It is still early and experimental. Stability, performance, and features are not guaranteed, and some functionality may be missing compared to the desktop version.
This is the code repository of Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state.
It's written in C/C++ and is being actively developed with new features and fixes.
There is no timeline for when this port will be finished or when new features will be implemented.
Cemu is currently only available for 64-bit Windows, Linux & macOS devices.
**Please do not open issues or pull requests yet.**
Development is ongoing, and contributions will be welcome once the project is more stable.
### Links:
- [Open Source Announcement](https://www.reddit.com/r/cemu/comments/wwa22c/cemu_20_announcement_linux_builds_opensource_and/)
- [Official Website](https://cemu.info)
- [Compatibility List/Wiki](https://wiki.cemu.info/wiki/Main_Page)
- [Official Subreddit](https://reddit.com/r/Cemu)
- [Official Discord](https://discord.gg/5psYsup)
- [Official Matrix Server](https://matrix.to/#/#cemu:cemu.info)
- [Setup Guide](https://cemu.cfw.guide)
#### Other relevant repositories:
- [Cemu-Language](https://github.com/cemu-project/Cemu-Language)
- [Cemu's Community Graphic Packs](https://github.com/cemu-project/cemu_graphic_packs)
## Download
You can download the latest Cemu releases for Windows, Linux and Mac from the [GitHub Releases](https://github.com/cemu-project/Cemu/releases/). For Linux you can also find Cemu on [flathub](https://flathub.org/apps/info.cemu.Cemu).
On Windows Cemu is currently only available in a portable format so no installation is required besides extracting it in a safe place.
The native macOS build is currently purely experimental and should not be considered stable or ready for issue-free gameplay. There are also known issues with degraded performance due to the use of MoltenVK and Rosetta for ARM Macs. We appreciate your patience while we improve Cemu for macOS.
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
## Build Instructions
To compile Cemu yourself on Windows, Linux or macOS, view [BUILD.md](/BUILD.md).
## Issues
Issues with the emulator should be filed using [GitHub Issues](https://github.com/cemu-project/Cemu/issues).
The old bug tracker can be found at [bugs.cemu.info](https://bugs.cemu.info) and still contains relevant issues and feature suggestions.
## Contributing
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on [Discord](https://discord.gg/5psYsup) or alternatively the [Matrix Server](https://matrix.to/#/#cemu:cemu.info).
Before submitting a pull request, please read and follow our code style guidelines listed in [CODING_STYLE.md](/CODING_STYLE.md).
If coding isn't your thing, testing games and making detailed bug reports or updating the (usually outdated) compatibility wiki is also appreciated!
Questions about Cemu's software architecture can also be answered on Discord (or through the Matrix bridge).
For general information about Cemu, see the [official website](https://cemu.info) and [main repository](https://github.com/cemu-project/Cemu).
## License
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+26
View File
@@ -0,0 +1,26 @@
<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::container::small_vector&lt;*&gt;">
<Expand>
<Item Name="[size]">m_holder.m_size</Item>
<ArrayItems>
<Size>m_holder.m_size</Size>
<ValuePointer>m_holder.m_start</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="boost::container::static_vector&lt;*&gt;">
<DisplayString>{{ size={m_holder.m_size} }}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">m_holder.m_size</Item>
<Item Name="[capacity]" ExcludeView="simple">static_capacity</Item>
<ArrayItems>
<Size>m_holder.m_size</Size>
<ValuePointer>($T1*)m_holder.storage.data</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
+205
View File
@@ -0,0 +1,205 @@
@echo off
setlocal enabledelayedexpansion
echo ========================================
echo Wee U Android Build Script
echo ========================================
echo.
REM Check if we're in the right directory
if not exist "src\android" (
echo ERROR: src\android directory not found!
echo Please run this script from the root of the WeeU repository.
pause
exit /b 1
)
REM Check if vcpkg dependencies are installed
if not exist "dependencies\vcpkg\installed\arm64-android" (
echo WARNING: vcpkg dependencies not found at dependencies\vcpkg\installed\arm64-android
echo.
echo Please ensure you have extracted the vcpkg dependencies:
echo 1. Run the GitHub Actions workflow "Build vcpkg Android Dependencies"
echo 2. Download the vcpkg-android-arm64.tar.gz artifact
echo 3. Extract it: tar -xzf vcpkg-android-arm64.tar.gz -C dependencies\vcpkg\
echo.
set /p CONTINUE="Continue anyway? (y/N): "
if /i not "!CONTINUE!"=="y" (
echo Build cancelled.
pause
exit /b 1
)
)
REM Check for gettext (msgfmt/msgunfmt)
where msgunfmt >nul 2>&1
if errorlevel 1 (
echo WARNING: msgunfmt not found in PATH
echo Translation files will not be processed.
echo.
echo To install gettext on Windows:
echo - Using Chocolatey: choco install gettext
echo - Using Scoop: scoop install gettext
echo - Or download from: https://mlocati.github.io/articles/gettext-iconv-windows.html
echo.
set SKIP_TRANSLATIONS=1
) else (
set SKIP_TRANSLATIONS=0
)
REM Process translation files
if "!SKIP_TRANSLATIONS!"=="0" (
echo.
echo ========================================
echo Processing translation files...
echo ========================================
for /d %%L in (bin\resources\*) do (
if exist "%%L\cemu.mo" (
set "language_code=%%~nxL"
set "po_file=src\android\app\src\main\assets\translations\!language_code!\cemu.po"
echo Processing !language_code!...
if not exist "src\android\app\src\main\assets\translations\!language_code!" (
mkdir "src\android\app\src\main\assets\translations\!language_code!"
)
msgunfmt "%%L\cemu.mo" -o "!po_file!" 2>nul
if errorlevel 1 (
echo WARNING: Failed to process %%L\cemu.mo
) else (
echo Created !po_file!
)
)
)
echo Translation processing complete.
) else (
echo Skipping translation processing.
)
REM Set version if provided
set VERSION_MAJOR=%1
set VERSION_MINOR=%2
if not "!VERSION_MAJOR!"=="" (
if not "!VERSION_MINOR!"=="" (
echo.
echo Building version !VERSION_MAJOR!.!VERSION_MINOR!
set "EMULATOR_VERSION_MAJOR=!VERSION_MAJOR!"
set "EMULATOR_VERSION_MINOR=!VERSION_MINOR!"
)
)
REM Check for Java 21
echo.
echo ========================================
echo Checking Java version...
echo ========================================
REM Basic presence check without piping (avoid cmd redirection quirks)
java -version >nul 2>nul
if errorlevel 1 (
echo ERROR: Java not found in PATH
echo The build requires Java 21 or higher.
pause
exit /b 1
)
REM Parse major version from `java -version` output
set "JAVA_VERSION="
for /f "tokens=3" %%v in ('java -version 2^>^&1 ^| findstr /i "version"') do (
set "JAVA_VERSION=%%v"
)
set "JAVA_VERSION=!JAVA_VERSION:"=!"
for /f "tokens=1 delims=." %%a in ("!JAVA_VERSION!") do set "JAVA_MAJOR=%%a"
if !JAVA_MAJOR! LSS 21 (
echo WARNING: Java !JAVA_MAJOR! detected. Java 21 or higher is recommended.
echo.
set /p CONTINUE="Continue anyway? (y/N): "
if /i not "!CONTINUE!"=="y" (
echo Build cancelled.
pause
exit /b 1
)
) else (
echo Java !JAVA_MAJOR! detected.
)
REM Set environment variable to use pre-installed vcpkg dependencies
set "VCPKG_ROOT=%CD%\dependencies\vcpkg"
set "ANDROID_NDK_HOME=C:\Android\ndk\29.0.14206865"
echo VCPKG_ROOT set to: %VCPKG_ROOT%
echo ANDROID_NDK_HOME set to: %ANDROID_NDK_HOME%
REM Build the Android app
echo.
echo ========================================
echo Building Android APK...
echo ========================================
echo.
cd src\android
REM Clean previous builds (optional)
set /p CLEAN="Clean previous builds? (y/N): "
if /i "!CLEAN!"=="y" (
echo Cleaning...
call gradlew.bat clean
)
echo.
echo Building Release APK...
call gradlew.bat assembleRelease
if errorlevel 1 (
echo.
echo ========================================
echo BUILD FAILED!
echo ========================================
cd ..\..
pause
exit /b 1
)
echo.
echo ========================================
echo Running tests...
echo ========================================
call gradlew.bat testRelease
if errorlevel 1 (
echo.
echo WARNING: Tests failed!
echo The APK was built but tests did not pass.
)
cd ..\..
echo.
echo ========================================
echo BUILD SUCCESSFUL!
echo ========================================
echo.
echo APK files are located at:
echo src\android\app\build\outputs\apk\release\app-release.apk
echo src\android\app\build\outputs\apk\debug\app-debug.apk
echo.
REM List the APK files
if exist "src\android\app\build\outputs\apk\release\*.apk" (
echo Release APK:
dir /b "src\android\app\build\outputs\apk\release\*.apk"
echo.
)
if exist "src\android\app\build\outputs\apk\debug\*.apk" (
echo Debug APK:
dir /b "src\android\app\build\outputs\apk\debug\*.apk"
echo.
)
echo Build complete!
pause

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