697 Commits
Author SHA1 Message Date
SSimco 317e207948 Updated release workflow 2024-09-22 00:36:31 +03:00
SSimco da7af728a9 Fixed dep 2024-09-21 21:58:40 +03:00
SSimco bc2b573053 Fixed key text not showing 2024-09-21 21:56:55 +03:00
SSimco 25ea6ddf47 Merge branch 'main' into android 2024-09-21 21:52:34 +03:00
SSimco be23c47cac Pass c++ exception to java for renderer functions 2024-09-21 21:48:37 +03:00
SSimco 80ea25b10f Added support for opening titles using file managers 2024-09-21 20:48:39 +03:00
capitalistspzandGitHub 8508c62540 Various smaller code improvements (#1343) 2024-09-17 02:00:26 +02:00
Andrea ToskaandGitHub adffd53dbd boss: Fix BOSS not honoring the proxy_server setting (#1344) 2024-09-16 12:40:38 +02:00
goeiecool9999andGitHub a05bdb172d Vulkan: Add explicit synchronization on frame boundaries (#1290) 2024-09-15 20:23:11 +02:00
Cemu-Language CI 1a4d9660e7 Update translation files 2024-09-08 15:40:13 +00:00
Exzap ba54d1540c Fix "Receive untested updates" option not being synced to config 2024-09-08 17:21:20 +02:00
SSimco cc10f93030 Updated android workflow to create storefile only if the secret is available 2024-09-04 13:51:29 +03:00
SSimco 75223fcf36 Refactored fileutils code 2024-09-04 11:30:03 +03:00
SSimco 882c840ae6 Removed unused icon 2024-09-04 07:40:52 +03:00
SSimco 0037544a00 Refactored game list code & added option to remove & add multiple game paths 2024-09-03 19:34:15 +03:00
SSimco 1485d0e315 Updated icon 2024-09-03 19:27:14 +03:00
MoonlightWave-12andGitHub 0d8fd7c0dc appimage: Do not copy libstdc++.so.6 to usr/lib/ (#1319) 2024-09-02 21:22:38 +02:00
Joshua de ReeperandGitHub b06990607d nsysnet: Avoid crash on NULL timeout in select (#1324) 2024-09-02 16:20:16 +02:00
SSimco 81c0e4a465 Added support for motion 2024-09-02 14:25:04 +03:00
SSimco d0eac6f470 Fixed not being able to resize some buttons 2024-09-01 22:34:47 +03:00
SSimco 3678a0e474 Added option to show graphic packs for installed games only 2024-09-01 22:34:44 +03:00
SSimco f0effa0f31 Fixed github workflow for android 2024-09-01 17:45:33 +03:00
SSimco dceec9e20a Added options to show the gamepad & added a menu when in game 2024-09-01 17:44:33 +03:00
SSimco c1fc52d169 Updated overlay settings 2024-09-01 09:47:46 +03:00
SSimco 52d73c2f3e Fix count cycles macro for count cycles > 4095 2024-09-01 09:42:45 +03:00
SSimco d5d686c3bf Fixed gamepad volume enable/disable toggle 2024-09-01 07:25:52 +03:00
SSimco 3e8d56c022 Refactor code 2024-09-01 07:25:49 +03:00
SSimco 972e655a9b Send touch events to Input manager 2024-08-31 11:28:58 +03:00
SSimco 5e129a87cb Update deprecated attribute 2024-08-30 20:23:52 +03:00
SSimco 73c864f196 WIP: refactor code 2024-08-30 20:22:58 +03:00
SSimco 655dd1ca2f Cleanup code 2024-08-30 20:22:39 +03:00
SSimco 15e64c48e3 Add x64 check for ATTR_MS_ABI 2024-08-30 20:22:18 +03:00
SSimco 87315d3457 Update xbyak dep 2024-08-30 20:21:26 +03:00
SSimco c2fb43ca96 Update recompiler tests 2024-08-30 20:15:29 +03:00
squidbusandGitHub 9a53b19403 CI+build: Improve macOS builds (#1310) 2024-08-28 11:06:49 +02:00
Cemu-Language CI 03484d2146 Update translation files 2024-08-28 09:05:50 +00:00
SSimco 89bdaad188 Update xbyak 2024-08-27 10:50:52 +03:00
SSimco 527ac0e575 Implement DCBZ 2024-08-26 20:15:43 +03:00
SSimco 8e38264c10 Merge branch 'main' into android 2024-08-26 16:07:04 +03:00
SSimco 912a4af5b4 Merge branch 'main' into android 2024-08-26 16:06:43 +03:00
ExzapandGitHub 1234e2c118 Preparations for 2.1 (#1306) 2024-08-26 11:43:38 +02:00
ExvergeandGitHub 1e15f337ec GX2: Use atomic pointers rather than mutex (#3)
* Revert "fix for recompiler/interperter crash on arm"

This reverts commit fb03e66041.

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

---------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* script changes with 2 arguments

* script changes with > 2 arguments

* script conversions with 1 argument - pt. 1

* script conversions with 1 argument - pt. 2

* script conversions with 1 argument - pt. 3

* script conversions with 1 argument - pt. 4

* script conversions with 1 argument - pt. 5

Pointer format hunting

* Fixed pointer format

* script conversions with 1 argument - final

* fixed conversion in non utf-8 file

* fixed conversion with capital letter

* actually fixed conversion with capital letter

* fixed another capital lettering issue

* Added conversions with LR removed

* removed LR from logs

* Converted logs that previously contained LR

* converted log that originally specified string length

* fixed log with commas in main text

* fixed multi-line log

* Fixed more logs with commas in main text

* Fixed unformatted pointer

* added conversion with float value

* converted lines with double parameters

* converted missed line

* corrected argument formatting

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

* Fixed misspellings of "unhandled"

unhandeled -> unhandled

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

---------

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

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

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

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

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

* Add memory writing and floating point registers support

* Reformat code a bit

* Format code to adhere to Cemu's coding style

* Rework GDB Stub settings in GUI

* Small styling fixes

* Rework execution breakpoints

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

* Implement access breakpoints

* Fix some issues with breakpoints

* Fix includes for Linux

* Fix unnecessary include

* Tweaks for Linux compatibility

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

* Enable GDB read/write breakpoints on x86 only

* Fix compilation for GCC compilers at least

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

* Disable them for MacOS due to lack of ptrace

---------

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

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

Introduced atomic_cmp_store operation to allow implementing STWCX in architecture agnostic IML

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

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

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

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

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

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

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

Not using the flag means that Cemu keeps some (performance-costing) debug checks in, alongside more logging and a debug logging console on Windows.
2022-09-20 00:15:53 +02:00
Crementif 510d80038d [coreinit] Add OSIsDebuggerPresent 2022-09-19 21:41:01 +02:00
SSimcoandGitHub 9f02733a0d Use unordered_map for keydown to allow codes above 255 (#248)
- Adds internal support for 32bit key codes, required for proper keyboard input on Linux
- Use gdk_keyval_name to get key name on Linux
2022-09-19 03:07:26 +02:00
ExzapandGitHub 5e968eff4f Fix 1x1 symbols in debugger window + Load icons from headers on all platforms
- Fixed an issue where the toolbar icons for the debugger were resized to 1x1
- On Windows we now load the PNG UI icons from the header-embedded pngs (`resource/embedded`) instead of via `cemu.rc` to match behavior of other platforms
2022-09-18 15:53:10 +02:00
TillsunsetandGitHub 867c0c5ca2 Fix some issues with building on macOS (#268)
* fixed building on macos, needs OBJC and OBJXX to be enabled
* changed to weak ordering due to string comparison not being strong ordering
* Use raw PNG bytes from "resource/embedded/resources.h" in all windows too
2022-09-18 14:39:00 +02:00
ExzapandGitHub 12b6830546 GX2: Add crash workaround for FFL uninitialized texture (#264)
When a game tries to generate Miis without the FFL files being dumped (<mlc>/sys/title/0005001b/10056000/content/) it will cause it to create and use a texture with invalid parameters.
This workaround catches and replaces bad texture parameters to avoid crashing further down the line.

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

We had this workaround in pre-2.0 Cemu already but it was dropped during refactoring.
2022-09-17 16:32:46 +02:00
dd14778561 [docs] Explain how to update local cemu repo + General fixes (#227)
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
2022-09-17 14:53:46 +02:00
TillsunsetandGitHub 41dcd48048 Fix a small regression when building in Macos (#262) 2022-09-17 13:52:12 +02:00
Crementif c113565fe3 [deps] Update zarchive 2022-09-17 10:45:27 +02:00
Herman SemenovandGitHub 03f5967408 Fix incorrect streamout buffer index in GS + refactor various code (#258) 2022-09-17 03:45:18 +02:00
Maximilian Downey TwissandGitHub 4a3d02db55 Properly list files in CMakeLists instead of using GLOB (#249) 2022-09-17 03:24:57 +02:00
ExzapandGitHub 910cdf4d5c Refactor wxGameList color code and match previous style on light theme (#261)
Refactored to pre-calculate the game list row colors at the beginning of the function. If the background color is almost white as it is on Windows, we'll use the previous bluish secondary color instead of grey-scale lightness adjustment.
2022-09-17 02:39:52 +02:00
ShoegzerandGitHub 6ef36152c2 Use system color definitions for wxGameList (#241)
Previously it would use hard-coded bright colors which clashed with dark themes on Linux
2022-09-17 01:06:36 +02:00
ExzapandGitHub 63206eb9a8 coreinit: Return error code instead of success in Acquire failure (#260)
Spotted by @Fs00
It's currently not known if any games are affected by this
2022-09-16 14:25:38 +02:00
Francesco SaltoriandGitHub 664d7ee902 Clean up more Cemuhook leftovers (#253) 2022-09-16 13:34:41 +02:00
CrementifandGitHub cebdccfdf5 Update readme about matrix server
Supersedes https://github.com/cemu-project/Cemu/pull/245
2022-09-15 04:06:40 +02:00
ExzapandGitHub 61a3b07697 Merge pull request #238 from Fs00/more-translations
More l10n improvements and add workflow to generate POT file
2022-09-14 22:49:14 +02:00
Crementif 6cf5dc9a56 Add matrix server for non-discord chatting
Fixes https://github.com/cemu-project/Cemu/issues/113
2022-09-11 16:56:51 +02:00
ExzapandGitHub 0afa2d75aa CI: build.yml no longer invokes itself, always produce artifact (#243)
- Build check is now a separate workflow
- Build with release config instead of debug
- Upload artifacts
2022-09-11 06:41:19 +02:00
capitalistsandGitHub b5963afbb5 Fix DSUController socket option error on Linux (#234) 2022-09-11 04:20:40 +02:00
SSimcoandGitHub 9a60979242 Linux: Avoid out-of-bounds raw keycode array access (#226) 2022-09-11 02:00:02 +02:00
capitalistsandGitHub d4879da95c Implement analog triggers for DSUController (#239) 2022-09-11 01:32:17 +02:00
Fs00 b47b38448c Add workflow for generating POT file 2022-09-10 19:17:14 +02:00
Fs00 694b9ec495 Avoid including newlines in localizable string 2022-09-10 18:47:32 +02:00
Fs00 08db65bd5a Remove some dead code 2022-09-10 18:47:32 +02:00
Fs00 13aa0a4fd0 Make controller button names translatable and deduplicate code 2022-09-10 18:47:27 +02:00
Fs00 4c6f22ba39 Simplify a few window names 2022-09-10 13:55:37 +02:00
ExzapandGitHub 3349d7b424 Merge pull request #231 from Exzap/main
FSC: Replace wstring paths with utf8 encoded strings + misc clean up
2022-09-10 00:48:20 +02:00
Exzap 680beaaf21 Rename path _utf8Wrapper to _utf8ToPath for better clarity 2022-09-09 23:49:38 +02:00
Exzap 168ecf8825 FSC: Use utf8 path strings instead of wchar
Also introduced helper function _utf8ToPath() to convert a utf8-encoded string to fs::path
2022-09-09 23:49:38 +02:00
Exzap 1ce629126a FSC: Refactor FileTree and remove redundant path parser class 2022-09-09 23:49:38 +02:00
Exzap b8462cec8b FSC: Refactor to use FSCPath instead of legacy code 2022-09-09 23:49:38 +02:00
Exzap 0e0602e8d9 FSC: Use utf8 for mounting and internal target path 2022-09-09 23:49:38 +02:00
SSimcoandGitHub cf598e38c1 Linux: Find case-insensitive file/folder path if not found (#196) 2022-09-09 20:16:46 +02:00
uranuspucksaxophoneandGitHub 6dda53e84f Improve docs (#216) 2022-09-09 18:39:23 +02:00
goeiecool9999andGitHub 045a059742 fix for when file open is successful but the path isn't a file (#220)
FSC and indirectly coreinit relies on FileStream open failing for directories
2022-09-09 16:10:12 +02:00
TotalCaesar659andGitHub 76313fc238 Update bug tracker URL to use HTTPS (#211) 2022-09-08 23:52:45 +02:00
ExzapandGitHub 1e851fe7e2 Latte: Fix infinite loop in special state clearAsDepth() (#209)
This broke while refactoring code for the 2.0 release. Resolves Tokyo Mirage Session and Pokken freezing on boot. Probably also affects some other games

Also updated .gitignore
2022-09-08 17:33:31 +02:00
Timothy RedaelliandGitHub f032088902 Use _Exit instead of exit under Linux (#204)
The best ExitProcess alternative for Linux is _Exit since it doesn't
call exit handlers.
2022-09-08 17:05:31 +02:00
Tom LallyandGitHub 6cdb6eed17 Cleanup udiv128 (#206) 2022-09-08 02:12:53 +02:00
bitscherandGitHub 4eaa600b57 Fix various compiler warnings given by Clang (#170) 2022-09-07 20:04:32 +02:00
bslhqandGitHub 4d1be950e3 Fix various issues related to title names (#192)
Fixed various issues related to title names:
1. If console language is set to non-English, the title names in Title Manager may be empty.
2. Game list do not show custom names if list style set to icon or small icon.
3. Custom title names for some languages (like JP or CN) appear confusing if re-edited.
4. Unexpected overrides of variable values in ParsedMetaXml.h
2022-09-07 19:58:56 +02:00
Jun Bo BiandGitHub b752d2eddd fix clang-cl (#202) 2022-09-07 18:22:40 +02:00
Timothy RedaelliandGitHub 0a1985e481 Set timer milliseconds for "Controller settings" (#194)
This is needed to avoid having the Controller settings window black on Linux
2022-09-07 16:54:48 +02:00
goeiecool9999andGitHub e20bfd00ec Separate filestream.h into OS specific implementation files (#190) 2022-09-07 02:42:25 +02:00
Tom LallyandGitHub f8b5024c09 Improved macro clarity. (#188) 2022-09-07 02:27:52 +02:00
1240 changed files with 97954 additions and 36604 deletions
+66
View File
@@ -0,0 +1,66 @@
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeElse: true
BeforeWhile: true
SplitEmptyFunction: false
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCSpaceAfterProperty: false
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceBeforeCtorInitializerColon: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
TabWidth: 4
UseTab: Always
@@ -1,34 +0,0 @@
---
name: Bug Report / Feature Request
about: Tech support does not belong here. You should only file an issue here if you think you have experienced an actual bug with Cemu or you are requesting a feature you believe would make Cemu better.
title: ''
labels: ''
assignees: ''
---
<!---
Please keep in mind Cemu is EXPERIMENTAL SOFTWARE.
Please read the FAQ:
https://cemu.info/faq.html/
THIS IS NOT A SUPPORT FORUM, FOR SUPPORT GO TO:
https://discord.com/invite/5psYsup/
If the FAQ does not answer your question, please go to:
https://discord.com/invite/5psYsup/
When submitting an issue, please check the following:
- You have read the above.
- You have provided the version (commit hash) of Cemu you are using.
- You have provided sufficient detail for the issue to be reproduced.
- You have provided system specs (if relevant).
- Please also provide:
- For any issues, a log file
- For crashes, a backtrace.
- For graphical issues, comparison screenshots with real hardware.
- For emulation inaccuracies, a test-case (if able).
-->
+1 -1
View File
@@ -2,4 +2,4 @@ blank_issues_enabled: false
contact_links:
- name: Cemu Discord
url: https://discord.com/invite/5psYsup
about: If you are experiencing an issue with Cemu, and you need tech support, or if you have a general question, try asking in the official Cemu Discord linked here. Piracy is not allowed.
about: If you need technical support with Cemu or have other questions the best place to ask is on the official Cemu Discord linked here
@@ -0,0 +1,69 @@
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Bug Report
description: Report an issue with Cemu emulator
title: "Enter a title for the bug report here"
labels: bug
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
If you discovered a bug you can report it here. Please make sure of the following first:
- That you are using the latest version of Cemu
- Only report something if you are sure it's a bug and not any technical issue on your end. For troubleshooting help see the [links page](https://github.com/cemu-project/Cemu#links)
- Problems specific to a single game should be reported on the [compatibility wiki](https://wiki.cemu.info/wiki/Main_Page) instead
- Verify that your problem isn't already mentioned on the [issue tracker](https://github.com/cemu-project/Cemu/issues)
Additionally, be aware that graphic packs can also causes issues. There is a separate issue tracker for graphic pack bugs over at the [graphic pack repository](https://github.com/cemu-project/cemu_graphic_packs)
- type: textarea
id: current_behavior
attributes:
label: Current Behavior
description: "What the bug is, in a brief description"
validations:
required: true
- type: textarea
id: expected_behavior
attributes:
label: Expected Behavior
description: "What did you expect to happen?"
validations:
required: true
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to Reproduce
description: "How to reproduce the issue"
validations:
required: true
- type: textarea
id: sys_info
attributes:
label: System Info (Optional)
description: "Your PC specifications. Usually only the operating system and graphics card is important. But feel free to add more info."
placeholder: |
Info
OS: Windows 10
GPU: NVIDIA GeForce RTX 4090
value: |
OS:
GPU:
- type: textarea
id: emulation_settings
attributes:
label: Emulation Settings (Optional)
description: |
Any non-default settings. You can leave this empty if you didn't change anything other than input settings.
validations:
required: false
- type: textarea
id: logs_files
attributes:
label: "Logs (Optional)"
description: |
"Attach `log.txt` from your Cemu folder (*File > Open Cemu folder*)".
validations:
required: false
@@ -0,0 +1,28 @@
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Feature suggestion
description: Suggest a new feature
title: "Enter a title for the suggestion here"
labels: feature request
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
While we appreciate suggestions, it is important to note that we are a very small team and there are already many more ideas than we could ever implement in the near future. Therefore, please only suggest something if you believe it is a great addition and the idea is reasonably unique.
*Avoid* to create suggestions for:
- Overly obvious features ("Game xyz does not work and should be fixed", "Wiimote support should be improved", "You should add an Android port", "Copy feature xyz from another emulator", "A button to pause/stop emulation")
- Niche features which are only interesting to a tiny percentage of users
- Large scale features ("Add a Metal backend for MacOS", "Add ARM support", "Add savestates")
Note that this doesn't mean we aren't interested in these ideas, but rather we likely have them planned anyway and it's mostly up to finding the time to implement them.
If you believe your idea is worthwhile even if it doesn't meet all the criteria above, you can still try suggesting it but we might close it.
- type: textarea
id: idea_suggestion
attributes:
label: Your suggestion
description: "Describe what your suggestion is in as much detail as possible"
validations:
required: true
-9
View File
@@ -1,9 +0,0 @@
#include <stdio.h>
#include "./../src/Common/version.h"
// output current Cemu version for CI workflow. Do not modify
int main()
{
printf("%d.%d", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR);
return 0;
}
+51
View File
@@ -0,0 +1,51 @@
name: Android build
on:
workflow_call:
workflow_dispatch:
push:
branches: ["android"]
pull_request:
branches: ["android"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: "recursive"
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
- name: Create store file
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 }}
if: "${{ env.ANDROID_STORE_FILE_BASE64 != '' }}"
run: |
cd ./src/android
base64 --decode <<< "${ANDROID_STORE_FILE_BASE64}" > store.jks
ANDROID_STORE_FILE=$(pwd)/store.jks
echo -e "keyStorePassword=$ANDROID_KEY_STORE_PASSWORD\nkeyAlias=$ANDROID_KEY_ALIAS\nstoreFile=$ANDROID_STORE_FILE\n" > keystore.properties
- name: Build Cemu for Android
run: |
cd ./src/android
./gradlew assembleRelease
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-android
path: |
./src/android/app/build/outputs/apk/release/*.apk
./src/android/app/build/outputs/apk/release/*.aab
+159 -101
View File
@@ -1,24 +1,12 @@
name: Build Cemu
on:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
workflow_call:
inputs:
deploymode:
next_version_major:
required: false
type: string
experimentalversion:
next_version_minor:
required: false
type: string
@@ -28,40 +16,40 @@ env:
jobs:
build-ubuntu:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
fetch-depth: 0
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
run: |
echo "BUILD_MODE=debug" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is debug"
- name: Setup version for experimental
if: ${{ inputs.experimentalversion != '' }}
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
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 ninja-build cmake libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm
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: "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 NuGet Credentials for vcpkg'
shell: 'bash'
run: |
@@ -78,89 +66,74 @@ jobs:
- name: "cmake"
run: |
mkdir -p build
cd build
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
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: |
cd build
ninja
cmake --build build
- name: Prepare artifact
if: ${{ inputs.deploymode == 'release' }}
run: mv bin/Cemu_release bin/Cemu
- name: Upload artifact
uses: actions/upload-artifact@v3
if: ${{ inputs.deploymode == 'release' }}
uses: actions/upload-artifact@v4
with:
name: cemu-bin-linux-x64
path: ./bin/Cemu
build-appimage:
runs-on: ubuntu-22.04
needs: build-ubuntu
steps:
- name: Checkout Upstream Repo
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: bin
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream
- 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
build-windows:
runs-on: windows-2022
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
run: |
echo "BUILD_MODE=debug" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is debug"
- name: Setup version for experimental
if: ${{ inputs.experimentalversion != '' }}
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: Workaround
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToRemove= @(
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64"
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64.Spectre"
)
[string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
# should be run twice
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
- name: Configure MSVC
uses: ilammy/msvc-dev-cmd@v1
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:
arch: amd64
toolset: 14.33.31629
spectre: false
cmake-version: '3.29.0'
- name: "Bootstrap vcpkg"
run: |
@@ -186,20 +159,105 @@ jobs:
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 }}
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 }} -j 2
cmake --build . --config ${{ env.BUILD_MODE }}
- name: Prepare artifact
if: ${{ inputs.deploymode == 'release' }}
run: Rename-Item bin/Cemu_release.exe Cemu.exe
- name: Upload artifact
uses: actions/upload-artifact@v3
if: ${{ inputs.deploymode == 'release' }}
uses: actions/upload-artifact@v4
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
build-macos:
runs-on: macos-14
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
brew update
brew install ninja nasm automake libtool
- name: "Install molten-vk"
run: |
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.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: "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 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=x86_64 \
-DMACOS_BUNDLE=ON \
-G Ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: |
mkdir bin/Cemu_app
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
ln -s /Applications bin/Cemu_app/Applications
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
rm bin/tmp.dmg
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: cemu-bin-macos-x64
path: ./bin/Cemu.dmg
+18
View File
@@ -0,0 +1,18 @@
name: Build check
on:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
build:
uses: ./.github/workflows/build.yml
-66
View File
@@ -1,66 +0,0 @@
name: Deploy experimental release
on:
workflow_dispatch:
jobs:
call-release-build:
uses: ./.github/workflows/build.yml
with:
deploymode: release
experimentalversion: ${{ github.run_number }}
deploy:
name: Deploy experimental release
runs-on: ubuntu-20.04
needs: call-release-build
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v3
with:
name: cemu-bin-linux-x64
path: cemu-bin-linux-x64
- uses: actions/download-artifact@v3
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- name: Initialize
run: |
mkdir upload
sudo apt install zip
- name: Get version
run: |
echo "Experimental version: ${{ github.run_number }}"
ls
gcc -o getversion .github/getversion.cpp
./getversion
echo "Cemu CI version: $(./getversion)"
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)-${{ github.run_number }}" >> $GITHUB_ENV
echo "CEMU_VERSION=$(./getversion)-${{ github.run_number }}" >> $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 release from linux-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-20.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
ghr_v0.15.0_linux_amd64/ghr -prerelease -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }} (Experimental)" -b "Cemu experimental release - [changelog](https://cemu.info/changelog.html)" "v${{ env.CEMU_VERSION }}" ./upload
@@ -0,0 +1,151 @@
name: Deploy experimental release
on:
workflow_dispatch:
inputs:
changelog0:
description: 'Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash.'
required: true
type: string
changelog1:
description: 'Feature 2'
required: false
type: string
changelog2:
description: 'Feature 3'
required: false
type: string
changelog3:
description: 'Feature 4'
required: false
type: string
changelog4:
description: 'Feature 5'
required: false
type: string
changelog5:
description: 'Feature 6'
required: false
type: string
changelog6:
description: 'Feature 7'
required: false
type: string
changelog7:
description: 'Feature 8'
required: false
type: string
changelog8:
description: 'Feature 9'
required: false
type: string
changelog9:
description: 'Feature 10'
required: false
type: string
jobs:
calculate-version:
name: Calculate Version
uses: ./.github/workflows/determine_release_version.yml
call-release-build:
uses: ./.github/workflows/build.yml
needs: calculate-version
with:
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
deploy:
name: Deploy experimental release
runs-on: ubuntu-22.04
needs: [call-release-build, calculate-version]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate changelog
id: generate_changelog
run: |
CHANGELOG=""
if [ -n "${{ github.event.inputs.changelog0 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog0 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog1 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog1 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog2 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog2 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog3 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog3 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog4 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog4 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog5 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog5 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
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
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 install zip
- name: Set version dependent vars
run: |
echo "Version: ${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
- name: Create release from windows-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create appimage
run: |
VERSION=${{ env.CEMU_VERSION }}
echo "Cemu Version is $VERSION"
ls cemu-appimage-x64
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
- name: Create release from linux-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-22.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: 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
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g')
RELEASE_BODY=$(printf "%s\n%s" \
"**Changelog:**" \
"$CHANGELOG_UNESCAPED")
ghr_v0.15.0_linux_amd64/ghr -draft -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "$RELEASE_BODY" "v${{ env.CEMU_VERSION }}" ./upload
@@ -0,0 +1,46 @@
name: Deploy experimental android release
on:
workflow_dispatch:
jobs:
call-release-build:
uses: ./.github/workflows/android_build.yml
secrets: inherit
deploy:
name: Deploy experimental release
runs-on: ubuntu-22.04
needs: [call-release-build]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
name: cemu-android
path: cemu-android
- name: Initialize
run: |
mkdir upload
sudo apt install zip
- name: Set version dependent vars
run: |
echo "CEMU_VERSION=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Create release from apk
run: |
VERSION=${{ env.CEMU_VERSION }}
echo "Cemu Version is $VERSION"
ls cemu-android
mv cemu-android/*.apk upload/Cemu-$VERSION.apk
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
RELEASE_BODY=$(printf "Experimental release\n%s" "Latest commit ${{ env.CEMU_VERSION }}")
ghr_v0.15.0_linux_amd64/ghr -b "$RELEASE_BODY" -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" "${{ env.CEMU_VERSION }}" ./upload
@@ -15,18 +15,28 @@ jobs:
runs-on: ubuntu-20.04
needs: call-release-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: cemu-bin-linux-x64
- uses: actions/download-artifact@v3
- 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
@@ -39,11 +49,7 @@ jobs:
echo "Cemu CI version: $(./getversion)"
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)" >> $GITHUB_ENV
echo "CEMU_VERSION=$(./getversion)" >> $GITHUB_ENV
- name: Create appimage
run: |
echo "to do"
- name: Create release from windows-bin
run: |
ls ./
@@ -52,6 +58,13 @@ jobs:
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: |
@@ -61,7 +74,10 @@ jobs:
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
@@ -0,0 +1,74 @@
name: Calculate Next Version from release history
on:
workflow_dispatch:
workflow_call:
outputs:
next_version:
description: "The next semantic version"
value: ${{ jobs.calculate-version.outputs.next_version }}
next_version_major:
description: "The next semantic version (major)"
value: ${{ jobs.calculate-version.outputs.next_version_major }}
next_version_minor:
description: "The next semantic version (minor)"
value: ${{ jobs.calculate-version.outputs.next_version_minor }}
jobs:
calculate-version:
runs-on: ubuntu-latest
outputs:
next_version: ${{ steps.calculate_next_version.outputs.next_version }}
next_version_major: ${{ steps.calculate_next_version.outputs.next_version_major }}
next_version_minor: ${{ steps.calculate_next_version.outputs.next_version_minor }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Get all releases
id: get_all_releases
run: |
# Fetch all releases and check for API errors
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/${{ github.repository }}/releases?per_page=100")
if [ "$RESPONSE" -ne 200 ]; then
echo "Failed to fetch releases. HTTP status: $RESPONSE"
cat response.json
exit 1
fi
# Extract and sort tags
ALL_TAGS=$(jq -r '.[].tag_name' response.json | grep -E '^v[0-9]+\.[0-9]+(-[0-9]+)?$' | sed 's/-.*//' | sort -V | tail -n 1)
# Exit if no tags were found
if [ -z "$ALL_TAGS" ]; then
echo "No valid tags found."
exit 1
fi
echo "::set-output name=tag::$ALL_TAGS"
# echo "tag=$ALL_TAGS" >> $GITHUB_STATE
- name: Calculate next semver minor
id: calculate_next_version
run: |
LATEST_VERSION=${{ steps.get_all_releases.outputs.tag }}
# strip 'v' prefix and split into major.minor
LATEST_VERSION=${LATEST_VERSION//v/}
IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
# increment the minor version
MINOR=$((MINOR + 1))
NEXT_VERSION="${MAJOR}.${MINOR}"
echo "Major: $MAJOR"
echo "Minor: $MINOR"
echo "Next version: $NEXT_VERSION"
echo "::set-output name=next_version::$NEXT_VERSION"
echo "::set-output name=next_version_major::$MAJOR"
echo "::set-output name=next_version_minor::$MINOR"
+42
View File
@@ -0,0 +1,42 @@
name: Generate translation template
on:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
generate-pot:
runs-on: ubuntu-latest
steps:
- name: "Checkout repo"
uses: actions/checkout@v3
- name: "Install gettext"
run: |
sudo apt update -qq
sudo apt install -y gettext
- name: "Generate POT file using xgettext"
run: >
find src -name *.cpp -o -name *.hpp -o -name *.h |
xargs xgettext --from-code=utf-8 -w 100
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
--check=space-ellipsis --omit-header
-o cemu.pot
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: POT file
path: ./cemu.pot
if-no-files-found: error
+13
View File
@@ -13,9 +13,12 @@
*.out
*.app
.vs
.vscode
.idea/
build/
build_arm
cmake-build-*/
out/
.cache/
bin/Cemu_*
@@ -30,8 +33,15 @@ bin/Cemu_*.ilk
bin/Cemu.exe.backup
bin/mlc01/*
bin/settings.xml
bin/network_services.xml
bin/title_list_cache.xml
bin/debugger/*
bin/sdcard/*
bin/screenshots/*
bin/dump/*
bin/cafeLibs/*
bin/portable/*
bin/keys.txt
!bin/shaderCache/info.txt
bin/shaderCache/*
@@ -42,3 +52,6 @@ bin/controllerProfiles/*
bin/gameProfiles/*
bin/graphicPacks/*
# Ignore Finder view option files created by OS X
.DS_Store
+10 -2
View File
@@ -1,6 +1,6 @@
[submodule "dependencies/ZArchive"]
path = dependencies/ZArchive
url = https://github.com/Exzap/ZArchive
url = https://github.com/SSimco/ZArchive
shallow = true
[submodule "dependencies/cubeb"]
path = dependencies/cubeb
@@ -9,7 +9,15 @@
[submodule "dependencies/vcpkg"]
path = dependencies/vcpkg
url = https://github.com/microsoft/vcpkg
shallow = true
shallow = false
[submodule "dependencies/Vulkan-Headers"]
path = dependencies/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers
shallow = true
[submodule "dependencies/imgui"]
path = dependencies/imgui
url = https://github.com/ocornut/imgui
shallow = true
[submodule "dependencies/xbyak_aarch64"]
path = dependencies/xbyak_aarch64
url = https://github.com/fujitsu/xbyak_aarch64
+168 -36
View File
@@ -1,59 +1,191 @@
# Build instructions
# Build Instructions
## Table of Contents
- [Windows](#windows)
- [Linux](#linux)
- [Dependencies](#dependencies)
- [For Arch and derivatives:](#for-arch-and-derivatives)
- [For Debian, Ubuntu and derivatives](#for-debian-ubuntu-and-derivatives)
- [For Fedora and derivatives:](#for-fedora-and-derivatives)
- [Build Cemu](#build-cemu)
- [CMake and Clang](#cmake-and-clang)
- [GCC](#gcc)
- [Debug Build](#debug-build)
- [Troubleshooting Steps](#troubleshooting-steps)
- [Compiling Errors](#compiling-errors)
- [Building Errors](#building-errors)
- [macOS](#macos)
- [Installing brew](#installing-brew)
- [Installing Tool Dependencies](#installing-tool-dependencies)
- [Installing Library Dependencies](#installing-library-dependencies)
- [Build Cemu using CMake](#build-cemu-using-cmake)
- [Updating Cemu and source code](#updating-cemu-and-source-code)
## Windows
Prerequisites:
- A recent version of Visual Studio 2022 (recommended but not required) with the following additional components:
- C++ CMake tools for Windows
- Windows 10/11 SDK
- git
- A recent version of Visual Studio 2022 with the following additional components:
- C++ CMake tools for Windows
- Windows 10/11 SDK
Instructions:
Instructions for Visual Studio 2022:
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
2. Launch `Cemu/generate_vs_solution.bat`.
- If you installed VS to a custom location or use VS 2019, you may need to manually change the path inside the .bat file
3. Wait until it's done, then open `Cemu/build/Cemu.sln` in Visual Studio
4. Then build the solution and once finished you can run and debug it, or build it and check the /bin folder for the final Cemu.exe.
2. Open the newly created Cemu directory in Visual Studio using the "Open a local folder" option
3. In the menu select Project -> Configure CMake. Wait until it is done, this may take a long time
4. You can now build, run and debug Cemu
You can also skip steps 3-5 and open the root folder of the cloned repo directly in Visual Studio (as a folder) and use the built-in cmake support but be warned that cmake support in VS can be a bit finicky.
Any other IDE should also work as long as it has CMake and MSVC support. CLion and Visual Studio Code have been confirmed to work.
## Linux
To compile Cemu, a recent enough compiler and STL with C++20 support is required! clang-12 or higher is what we recommend.
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend.
### Installing dependencies
#### For Ubuntu and derivatives:
`sudo apt install -y git curl cmake ninja-build nasm libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev libpulse-dev`
Additionally, for ubuntu 20.04 only:
- `sudo apt install -y clang-12`
- At step 3 while building, use
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
### Dependencies
#### For Arch and derivatives:
`sudo pacman -S git cmake clang ninja nasm base-devel linux-headers gtk3 libsecret libgcrypt systemd freeglut zip libpulse`
`sudo pacman -S --needed base-devel 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`
You may also need to install `libusb-1.0-0-dev` as a workaround for an issue with the vcpkg hidapi package.
At Step 3 in [Build Cemu using cmake and clang](#build-cemu-using-cmake-and-clang), use the following command instead:
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
#### For Fedora and derivatives:
`sudo dnf install git cmake clang ninja-build nasm kernel-headers gtk3-devel libsecret-devel libgcrypt-devel systemd-devel freeglut-devel perl-core zlib-devel cubeb-devel`
`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`
### Build Cemu
#### CMake and Clang
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
#### GCC
If you are building using GCC, make sure you have g++ installed:
- Installation for Arch and derivatives: `sudo pacman -S gcc`
- Installation for Debian, Ubuntu and derivatives: `sudo apt install g++`
- Installation for Fedora and derivatives: `sudo dnf install gcc-c++`
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja
cmake --build build
```
#### Debug Build
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
If you are using GCC, replace `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja` with `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja`
#### Troubleshooting Steps
##### Compiling Errors
This section refers to running `cmake -S...` (truncated).
* `vcpkg install failed`
* Run the following in the root directory and try running the command again (don't forget to change directories afterwards):
* `cd dependencies/vcpkg && git fetch --unshallow`
* `Please ensure you're using the latest port files with git pull and vcpkg update.`
* Either:
* Update vcpkg by running by the following command:
* `git submodule update --remote dependencies/vcpkg`
* If you are sure vcpkg is up to date, check the following logs:
* `Cemu/dependencies/vcpkg/buildtrees/wxwidgets/config-x64-linux-out.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-meson-log.txt.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-out.log`
* Not able to find Ninja.
* Add the following and try running the command again:
* `-DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
* Compiling failed during the boost-build dependency.
* It means you don't have a working/good standard library installation. Check the integrity of your system headers and making sure that C++ related packages are installed and intact.
* Compiling failed during rebuild after `git pull` with an error that mentions RPATH
* Add the following and try running the command again:
* `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
* If you are getting a random error, read the [package-name-and-platform]-out.log and [package-name-and-platform]-err.log for the actual reason to see if you might be lacking the headers from a dependency.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
##### Building Errors
This section refers to running `cmake --build build`.
* `main.cpp.o: in function 'std::__cxx11::basic_string...`
* You likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see [GCC](#gcc).
* `fatal error: 'span' file not found`
* You're either missing `libstdc++` or are using a version that's too old. Install at least v10 with your package manager, eg `sudo apt install libstdc++-10-dev`. See [#644](https://github.com/cemu-project/Cemu/issues/644).
* `undefined libdecor_xx`
* You are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
## macOS
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and below
don't support the C++20 feature set required, so either install LLVM from Homebrew or make sure that
you have a recent enough version of Xcode. Xcode 15 is known to work. The OpenGL graphics API isn't
supported on macOS, so Vulkan must be used through the Molten-VK compatibility layer.
### Installing brew
1. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
2. Set up the Homebrew shell environment:
1. **On an Intel Mac:** `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
2. **On an Apple Silicon Mac:** eval `"$(/opt/homebrew/bin/brew shellenv)"`
### Installing Tool Dependencies
The native versions of these can be used regardless of what type of Mac you have.
`brew install git cmake ninja nasm automake libtool`
### Installing Library Dependencies
**On Apple Silicon Macs, Rosetta 2 and the x86_64 version of Homebrew must be used to install these dependencies:**
1. `softwareupdate --install-rosetta` # Install Rosetta 2 if you don't have it. This only has to be done once
2. `arch -x86_64 zsh` # run an x64 shell
3. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
4. `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
Then install the dependencies:
`brew install boost molten-vk`
### Build Cemu using CMake
### Build Cemu using cmake and clang
1. `git clone --recursive https://github.com/cemu-project/Cemu`
2. `cd Cemu`
3. `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja`
3. `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_OSX_ARCHITECTURES=x86_64 -G Ninja`
4. `cmake --build build`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu`.
#### Using GCC
While we use and test Cemu using clang, using GCC might work better with your distro (they should be fairly similar performance/issues wise and should only be considered if compilation is the issue).
You can use it by replacing the step 3 with the following:
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
#### Troubleshooting steps
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/bin/ninja` to the command and running it again.
- If step 3 fails while compiling the boost-build dependency, it means you don't have a working/good standard library installation. Check the integrity of your system headers and making sure that C++ related packages are installed and intact.
- If step 3 gives a random error, read the `[package-name-and-platform]-out.log` and `[package-name-and-platform]-err.log` for the actual reason to see if you might be lacking the headers from a dependency.
- If step 3 is still failing or if you're not able to find the cause, please make an issue on our Github about it!
- If step 4 gives you an error that contains something like `main.cpp.o: in function 'std::__cxx11::basic_string...`, you likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see below.
- If step 4 gives you a different error, you could report it to this repo or try using GCC. Just make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
- If step 4 gives you undefined libdecor_xx, you are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile
- If 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.
## Updating Cemu and source code
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
- This should update your local copy of Cemu and all of its dependencies.
2. Then, you can rebuild Cemu using the steps listed above, according to whether you use Linux or Windows.
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
+137 -22
View File
@@ -1,17 +1,56 @@
cmake_minimum_required(VERSION 3.21.1)
option(PUBLIC_RELEASE "Compile with debug asserts disabled and no console" OFF)
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
if (EXPERIMENTAL_VERSION)
add_definitions(-DEMULATOR_VERSION_MINOR=${EXPERIMENTAL_VERSION})
endif()
# used by CI script to set version:
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
set(EMULATOR_VERSION_MINOR "0" CACHE STRING "")
set(EMULATOR_VERSION_PATCH "0" CACHE STRING "")
execute_process(
COMMAND git log --format=%h -1
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
if (ENABLE_VCPKG)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
# check if vcpkg is shallow and unshallow it if necessary
execute_process(
COMMAND git rev-parse --is-shallow-repository
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/vcpkg
OUTPUT_VARIABLE is_vcpkg_shallow
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(is_vcpkg_shallow STREQUAL "true")
message(STATUS "vcpkg is shallow. Unshallowing it now...")
execute_process(
COMMAND git fetch --unshallow
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/dependencies/vcpkg"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
)
endif()
if(UNIX AND NOT APPLE AND NOT VCPKG_TARGET_ANDROID)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux")
elseif(APPLE)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac")
else()
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
endif()
if(VCPKG_TARGET_ANDROID)
set(ENV{ANDROID_NDK_HOME} ${ANDROID_NDK})
set(ENV{VCPKG_ROOT} "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/vcpkg_android.cmake")
else()
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
endif()
# Set this so that all the various find_package() calls don't need an explicit
# CONFIG option
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
@@ -20,7 +59,7 @@ if (ENABLE_VCPKG)
endif()
endif()
project(Cemu VERSION 2.0)
project(Cemu VERSION 2.0.0)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
@@ -29,13 +68,20 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (PUBLIC_RELEASE)
add_compile_definitions(PUBLIC_RELEASE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) # enable LTO
endif()
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
add_definitions(-DEMULATOR_VERSION_MAJOR=${EMULATOR_VERSION_MAJOR})
add_definitions(-DEMULATOR_VERSION_MINOR=${EMULATOR_VERSION_MINOR})
add_definitions(-DEMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# enable link time optimization for release builds
if(NOT ANDROID)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
endif()
if (MSVC)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
# floating point model: precise, fiber safe optimizations
@@ -48,22 +94,34 @@ if (MSVC)
else()
add_compile_options(/GT)
endif()
if (PUBLIC_RELEASE)
message(STATUS "Using additional optimization flags for MSVC")
add_compile_options(/Oi /Ot) # enable intrinsic functions, favor speed
endif()
# enable additional optimization flags for release builds
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Oi>) # enable intrinsic functions
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Ot>) # favor speed
endif()
if (APPLE)
enable_language(OBJC OBJCXX)
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
endif()
if (UNIX AND NOT APPLE)
option(ENABLE_WAYLAND "Build with Wayland support" ON)
option(ENABLE_FERAL_GAMEMODE "Enables Feral Interactive GameMode Support" ON)
endif()
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
option(ENABLE_VULKAN "Enables the Vulkan backend" ON)
option(ENABLE_DISCORD_RPC "Enables the Discord Rich Presence feature" ON)
# input backends
if (WIN32)
option(ENABLE_XINPUT "Enables the usage of XInput" ON)
option(ENABLE_DIRECTINPUT "Enables the usage of DirectInput" ON)
add_compile_definitions(HAS_DIRECTINPUT)
endif()
option(ENABLE_HIDAPI "Build with HIDAPI" ON)
option(ENABLE_SDL "Enables the SDLController backend" ON)
# audio backends
@@ -73,23 +131,45 @@ 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(imgui REQUIRED)
find_package(RapidJSON REQUIRED)
find_package(Boost COMPONENTS program_options filesystem nowide REQUIRED)
if(ANDROID)
find_package(Boost COMPONENTS context iostreams REQUIRED)
endif()
find_package(libzip REQUIRED)
find_package(glslang REQUIRED)
find_package(ZLIB REQUIRED)
find_package(zstd MODULE REQUIRED) # MODULE so that zstd::zstd is available
find_package(OpenSSL COMPONENTS Crypto SSL REQUIRED)
find_package(glm REQUIRED)
find_package(fmt 9.1.0 REQUIRED)
find_package(fmt 9 REQUIRED)
find_package(PNG REQUIRED)
# glslang versions older than 11.11.0 define targets without a namespace
@@ -97,8 +177,23 @@ 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)
find_package(WaylandScanner REQUIRED)
find_package(WaylandProtocols 1.15 REQUIRED)
ecm_add_wayland_client_protocol(WAYLAND_PROTOCOL_SRCS
PROTOCOL "${WaylandProtocols_DATADIR}/stable/viewporter/viewporter.xml"
BASENAME viewporter)
add_library(CemuWaylandProtocols STATIC ${WAYLAND_PROTOCOL_SRCS})
target_include_directories(CemuWaylandProtocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
add_compile_definitions(HAS_WAYLAND)
endif()
find_package(GTK3 REQUIRED)
endif()
if (ENABLE_VULKAN)
@@ -115,18 +210,34 @@ if (ENABLE_DISCORD_RPC)
target_include_directories(discord-rpc INTERFACE ./dependencies/discord-rpc/include)
endif()
if (ENABLE_HIDAPI)
find_package(hidapi REQUIRED)
set(ENABLE_WIIMOTE ON)
add_compile_definitions(HAS_HIDAPI)
endif ()
if(UNIX AND NOT APPLE AND NOT ANDROID)
if(ENABLE_FERAL_GAMEMODE)
add_compile_definitions(ENABLE_FERAL_GAMEMODE)
add_subdirectory(dependencies/gamemode EXCLUDE_FROM_ALL)
target_include_directories(gamemode INTERFACE ./dependencies/gamemode/lib)
endif()
endif()
if (ENABLE_WXWIDGETS)
find_package(wxWidgets 3.2 REQUIRED COMPONENTS base core gl propgrid xrc)
endif()
if (ENABLE_CUBEB)
if (NOT ENABLE_VCPKG)
find_package(cubeb)
endif()
if (NOT cubeb_FOUND)
option(BUILD_TESTS "" OFF)
option(BUILD_TOOLS "" OFF)
option(BUNDLE_SPEEX "" OFF)
set(USE_WINMM OFF CACHE BOOL "")
add_subdirectory("dependencies/cubeb" EXCLUDE_FROM_ALL)
add_subdirectory("dependencies/cubeb" EXCLUDE_FROM_ALL SYSTEM)
set_property(TARGET cubeb PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
add_library(cubeb::cubeb ALIAS cubeb)
endif()
@@ -135,6 +246,10 @@ endif()
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)")
add_subdirectory("dependencies/xbyak_aarch64" EXCLUDE_FROM_ALL)
endif()
find_package(ZArchive)
if (NOT ZArchive_FOUND)
add_subdirectory("dependencies/ZArchive" EXCLUDE_FROM_ALL)
+4 -5
View File
@@ -1,7 +1,7 @@
{
"configurations": [
{
"name": "Release",
"name": "RelWithDebInfo",
"configurationType": "RelWithDebInfo",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
@@ -9,13 +9,12 @@
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Public Release",
"configurationType": "RelWithDebInfo",
"name": "Release",
"configurationType": "Release",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "-DPUBLIC_RELEASE=ON"
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Debug",

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