Author SHA1 Message Date
devloai[bot] 93ca083d48 devlo: snapshot for thread user-thread-20251020073455 2025-10-20 07:38:56 +00:00
devloai[bot] fa9478edf6 devlo: snapshot for thread user-thread-20251020073048 2025-10-20 07:32:12 +00:00
devloai[bot] 36e50678d6 devlo: snapshot for thread user-thread-20251020072636 2025-10-20 07:28:01 +00:00
goeiecool9999andGitHub 3acd0c4f2c Vulkan: Protect against uniform var ringbuffer overflow (#1378) 2024-10-14 14:03:36 +02:00
Alexandre BouvierandGitHub 6dc73f5d79 Add support for fmt 11 (#1366) 2024-10-03 08:48:25 +02: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
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
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
ExzapandGitHub 1234e2c118 Preparations for 2.1 (#1306) 2024-08-26 11:43:38 +02: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
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
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
Exzap 1ee9d5c78c coreinit: Tweak JD2019 workaround to avoid XCX softlock 2024-05-27 01:24:24 +02: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
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
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
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
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
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
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
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
Alexandre BouvierandGitHub 34ff9da097 cmake: exclude fmt10 (#921) 2023-07-31 01:15:44 +02: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
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
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
Squall LeonhartandGitHub 1beec40445 Fix logging related crash in KPADGetUnifiedWpadStatus (#875) 2023-06-22 04:11:31 +02:00
ValentinandGitHub cd3fe0685f docs: Fix 404 link in issue template (#868) 2023-06-18 12:16:50 +02: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
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
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
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
849 changed files with 60728 additions and 20056 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;
}
+72 -75
View File
@@ -3,10 +3,10 @@ name: Build Cemu
on:
workflow_call:
inputs:
deploymode:
next_version_major:
required: false
type: string
experimentalversion:
next_version_minor:
required: false
type: string
@@ -16,37 +16,35 @@ 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"
fetch-depth: 0
- name: Setup release mode parameters (for deploy)
if: ${{ inputs.deploymode == 'release' }}
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
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 != '' }}
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 clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build
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: |
@@ -68,31 +66,29 @@ jobs:
- name: "cmake"
run: |
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DPORTABLE=OFF -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: |
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-20.04
runs-on: ubuntu-22.04
needs: build-ubuntu
steps:
- name: Checkout Upstream Repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-linux-x64
path: bin
@@ -100,13 +96,16 @@ jobs:
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build
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: dist/linux/appimage.sh
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@v3
uses: actions/upload-artifact@v4
with:
name: cemu-appimage-x64
path: artifacts
@@ -115,35 +114,26 @@ jobs:
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=" | 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' }}
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
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 != '' }}
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: 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: |
@@ -174,49 +164,54 @@ jobs:
- 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-12
runs-on: macos-14
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" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup debug mode parameters (for continous build)
if: ${{ inputs.deploymode != 'release' }}
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
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 != '' }}
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: |
brew install llvm@14 ninja nasm molten-vk
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
@@ -239,28 +234,30 @@ jobs:
run: |
mkdir build
cd build
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DPORTABLE=OFF -DMACOS_BUNDLE=ON -DCMAKE_C_COMPILER=/usr/local/opt/llvm@14/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@14/bin/clang++ -G Ninja
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
if: ${{ inputs.deploymode == 'release' }}
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
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@v3
if: ${{ inputs.deploymode == 'release' }}
uses: actions/upload-artifact@v4
with:
name: cemu-bin-macos-x64
path: ./bin/Cemu.dmg
-3
View File
@@ -16,6 +16,3 @@ on:
jobs:
build:
uses: ./.github/workflows/build.yml
with:
deploymode: release
experimentalversion: 999999
@@ -1,36 +1,99 @@
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:
deploymode: release
experimentalversion: ${{ github.run_number }}
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-20.04
needs: call-release-build
runs-on: ubuntu-22.04
needs: [call-release-build, calculate-version]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
- 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@v3
- uses: actions/download-artifact@v4
with:
name: cemu-appimage-x64
path: cemu-appimage-x64
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-macos-x64
path: cemu-bin-macos-x64
@@ -40,15 +103,13 @@ jobs:
mkdir upload
sudo apt install zip
- name: Get version
- name: Set version dependent vars
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
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: |
@@ -72,7 +133,7 @@ jobs:
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 }}
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
@@ -83,4 +144,8 @@ jobs:
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" "v${{ env.CEMU_VERSION }}" ./upload
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
+4 -4
View File
@@ -17,22 +17,22 @@ jobs:
steps:
- 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@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: cemu-bin-macos-x64
path: cemu-bin-macos-x64
@@ -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"
+2 -2
View File
@@ -29,8 +29,8 @@ jobs:
- name: "Generate POT file using xgettext"
run: >
find src -name *.cpp -o -name *.hpp -o -name *.h |
xargs xgettext --from-code=utf-8
-k_ -kwxTRANSLATE -w 100
xargs xgettext --from-code=utf-8 -w 100
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
--check=space-ellipsis --omit-header
-o cemu.pot
+8
View File
@@ -17,6 +17,7 @@
.idea/
build/
cmake-build-*/
out/
.cache/
bin/Cemu_*
@@ -36,6 +37,10 @@ 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/*
@@ -46,3 +51,6 @@ bin/controllerProfiles/*
bin/gameProfiles/*
bin/graphicPacks/*
# Ignore Finder view option files created by OS X
.DS_Store
+3 -1
View File
@@ -9,10 +9,12 @@
[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
+147 -59
View File
@@ -1,94 +1,181 @@
# 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_release.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 cmake curl freeglut3-dev git libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build`
*Additionally, for Ubuntu 22.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 --needed base-devel clang cmake freeglut git gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
`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 clang cmake cubeb-devel freeglut-devel git gtk3-devel kernel-headers libgcrypt-devel libsecret-devel nasm ninja-build perl-core systemd-devel zlib-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 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`
4. `cmake --build build`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
### Build 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`
#### CMake and Clang
#### 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 fails during rebuild after `git pull` with an error that mentions RPATH, add this to the end of step 3: `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
```
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, built in LLVM, and Xcode LLVM don't support the C++20 feature set required. Currently,
LLVM 15 isn't supported due to compatibility issues with Boost dependency. The OpenGL graphics
API isn't support on macOS, Vulkan must be used. Additionally Vulkan must be used through the
Molten-VK compatibility layer
### On Apple Silicon Macs, Rosetta 2 and the x86_64 version of Homebrew must be used
You can skip this section if you have an Intel Mac. Every time you compile, you need to perform steps 2.
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
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. `eval "$(/usr/local/Homebrew/bin/brew shellenv)"` # set x86_64 brew env
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 dependencies
### Installing Tool Dependencies
`brew install boost git cmake llvm@14 ninja nasm molten-vk`
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/local/opt/llvm@14/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@14/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_release`.
@@ -101,3 +188,4 @@ You can skip this section if you have an Intel Mac. Every time you compile, you
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.
+99 -18
View File
@@ -1,23 +1,47 @@
cmake_minimum_required(VERSION 3.21.1)
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
option(PORTABLE "All data created and maintained by Cemu will be in the directory where the executable file is located" ON)
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
if (EXPERIMENTAL_VERSION)
add_definitions(-DEMULATOR_VERSION_MINOR=${EXPERIMENTAL_VERSION})
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})
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")
# 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)
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()
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
# Set this so that all the various find_package() calls don't need an explicit
@@ -39,9 +63,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
if(PORTABLE)
add_compile_definitions(PORTABLE)
endif()
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)
@@ -68,18 +92,27 @@ 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
@@ -89,6 +122,23 @@ 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)
@@ -104,7 +154,7 @@ 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
@@ -114,6 +164,21 @@ endif()
if (UNIX AND NOT APPLE)
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)
@@ -130,18 +195,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)
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()
+1 -1
View File
@@ -14,7 +14,7 @@
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Debug",
+99
View File
@@ -0,0 +1,99 @@
# Coding style guidelines for Cemu
This document describes the latest version of our coding-style guidelines. Since we did not use this style from the beginning, older code may not adhere to these guidelines. Nevertheless, use these rules even if the surrounding code does not match.
Cemu comes with a `.clang-format` file which is supported by most IDEs for formatting. Avoid auto-reformatting whole files, PRs with a lot of formatting changes are difficult to review.
## Names for variables, functions and classes
- Always prefix class member variables with `m_`
- Always prefix static class variables with `s_`
- For variable names: Camel case, starting with a lower case letter after the prefix. Examples: `m_option`, `s_audioVolume`
- For functions/class names: Use camel case starting with a capital letter. Examples: `MyClass`, `SetActive`
- Avoid underscores in variable names after the prefix. Use `m_myVariable` instead of `m_my_variable`
## About types
Cemu provides its own set of basic fixed-width types. They are:
`uint8`, `sint8`, `uint16`, `sint16`, `uint32`, `sint32`, `uint64`, `sint64`. Always use these types over something like `uint32_t`. Using `size_t` is also acceptable where suitable. Avoid C types like `int` or `long`. The only exception is when interacting with external libraries which expect these types as parameters.
## When and where to put brackets
Always put curly-brackets (`{ }`) on their own line. Example:
```
void FooBar()
{
if (m_hasFoo)
{
...
}
}
```
As an exception, you can put short lambdas onto the same line:
```
SomeFunc([]() { .... });
```
You can skip brackets for single-statement `if`. Example:
```
if (cond)
action();
```
## Printing
Avoid sprintf and similar C-style formatting API. Use `fmt::format()`.
In UI related code you can use `formatWxString`, but be aware that number formatting with this function will be locale dependent!
## Strings and encoding
We use UTF-8 encoded `std::string` where possible. Some conversions need special handling and we have helper functions for those:
```cpp
// std::filesystem::path <-> std::string (in precompiled.h)
std::string _pathToUtf8(const fs::path& path);
fs::path _utf8ToPath(std::string_view input);
// wxString <-> std::string
wxString wxString::FromUTF8(const std::string& s)
wxString to_wxString(std::string_view str); // in gui/helpers.h
std::string wxString::utf8_string();
```
## Logging
If you want to write to log.txt use `cemuLog_log()`. The log type parameter should be mostly self-explanatory. Use `LogType::Force` if you always want to log something. For example:
`cemuLog_log(LogType::Force, "The value is {}", 123);`
## HLE and endianness
A pretty large part of Cemu's code base are re-implementations of various Cafe OS modules (e.g. `coreinit.rpl`, `gx2.rpl`...). These generally run in the context of the emulated process, thus special care has to be taken to use types with the correct size and endianness when interacting with memory.
Keep in mind that the emulated Espresso CPU is 32bit big-endian, while the host architectures targeted by Cemu are 64bit little-endian!
To keep code simple and remove the need for manual endian-swapping, Cemu has templates and aliases of the basic types with explicit endian-ness.
For big-endian types add the suffix `be`. Example: `uint32be`
When you need to store a pointer in the guest's memory. Use `MEMPTR<T>`. It will automatically store any pointer as 32bit big-endian. The pointer you store must point to memory that is within the guest address space.
## HLE interfaces
The implementation for each HLE module is inside a namespace with a matching name. E.g. `coreinit.rpl` functions go into `coreinit` namespace.
To expose a new function as callable from within the emulated machine, use `cafeExportRegister` or `cafeExportRegisterFunc`. Here is a short example:
```cpp
namespace coreinit
{
uint32 OSGetCoreCount()
{
return Espresso::CORE_COUNT;
}
void Init()
{
cafeExportRegister("coreinit", OSGetCoreCount, LogType::CoreinitThread);
}
}
```
You may also see some code which uses `osLib_addFunction` directly. This is a deprecated way of registering functions.
+11 -10
View File
@@ -5,36 +5,36 @@
[![Matrix Server](https://img.shields.io/matrix/cemu:cemu.info?server_fqdn=matrix.cemu.info&label=cemu:cemu.info&logo=matrix&logoColor=FFFFFF)](https://matrix.to/#/#cemu:cemu.info)
This is the code repository of Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state.
It's written in C/C++ and is being actively developed with new features and fixes to increase compatibility, convenience and usability.
It's written in C/C++ and is being actively developed with new features and fixes.
Cemu is currently only available for 64-bit Windows and Linux devices.
Cemu is currently only available for 64-bit Windows, Linux & macOS devices.
### Links:
- [Original 2.0 announcement post](https://www.reddit.com/r/cemu/comments/wwa22c/cemu_20_announcement_linux_builds_opensource_and/)
- [Open Source Announcement](https://www.reddit.com/r/cemu/comments/wwa22c/cemu_20_announcement_linux_builds_opensource_and/)
- [Official Website](https://cemu.info)
- [Compatibility List/Wiki](https://wiki.cemu.info/wiki/Main_Page)
- [Official Subreddit](https://reddit.com/r/Cemu)
- [Official Discord](https://discord.gg/5psYsup)
- [Official Matrix Server](https://matrix.to/#/#cemu:cemu.info)
- [Unofficial Setup Guide](https://cemu.cfw.guide)
- [Setup Guide](https://cemu.cfw.guide)
#### Other relevant repositories:
- [Cemu-Language](https://github.com/cemu-project/Cemu-Language)
- [Cemu's Community Graphic Packs](https://github.com/ActualMandM/cemu_graphic_packs)
- [Cemu's Community Graphic Packs](https://github.com/cemu-project/cemu_graphic_packs)
## Download
You can download the latest Cemu releases from the [GitHub Releases](https://github.com/cemu-project/Cemu/releases/) or from [Cemu's website](https://cemu.info).
You can download the latest Cemu releases for Windows, Linux and Mac from the [GitHub Releases](https://github.com/cemu-project/Cemu/releases/). For Linux you can also find Cemu on [flathub](https://flathub.org/apps/info.cemu.Cemu).
Cemu is currently only available in a portable format so no installation is required besides extracting it in a safe place.
On Windows Cemu is currently only available in a portable format so no installation is required besides extracting it in a safe place.
The native Linux build is currently a work-in-progress. See [Current State Of Linux builds](https://github.com/cemu-project/Cemu/issues/107) for more information about the things to be aware of.
The native macOS build is currently purely experimental and should not be considered stable or ready for issue-free gameplay. There are also known issues with degraded performance due to the use of MoltenVK and Rosetta for ARM Macs. We appreciate your patience while we improve Cemu for macOS.
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
## Build Instructions
To compile Cemu yourself on Windows or Linux, view the [BUILD.md file](/BUILD.md).
To compile Cemu yourself on Windows, Linux or macOS, view [BUILD.md](/BUILD.md).
## Issues
@@ -44,10 +44,11 @@ The old bug tracker can be found at [bugs.cemu.info](https://bugs.cemu.info) and
## Contributing
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on [Discord](https://discord.gg/5psYsup) or alternatively the [Matrix Server](https://matrix.to/#/#cemu:cemu.info).
Before submitting a pull request, please read and follow our code style guidelines listed in [CODING_STYLE.md](/CODING_STYLE.md).
If coding isn't your thing, testing games and making detailed bug reports or updating the (usually outdated) compatibility wiki is also appreciated!
Questions about Cemu's software architecture can also be answered on Discord (through the Matrix bridge).
Questions about Cemu's software architecture can also be answered on Discord (or through the Matrix bridge).
## License
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
@@ -1,4 +1 @@
# Mario Kart 8 (JPN)
[CPU]
cpuMode = Singlecore-Recompiler
# Mario Kart 8 (JPN)

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