Commit graph

79 commits

Author SHA1 Message Date
SamoZ256
26e40a4bce
Add Metal backend (#1287) 2025-12-06 17:14:25 +01:00
mazes-80
921e91ed75
build: Add missing includes required for gcc 14 (#1730) 2025-11-27 17:39:54 +01:00
oltolm
1382ee0381
build/cmake: Clean up target_link_libraries (#1726) 2025-11-21 01:50:52 +01:00
goeiecool9999
5390f9338c
GX2: Implement GX2SetTVGamma and GX2SetDRCGamma (#1682) 2025-11-14 13:51:58 +01:00
Exzap
4fa0df6dcf nn_boss: Reimplementation
This is a full rewrite of our nn_boss (SpotPass) implementation. The previous code was based on a lot of incorrect guesswork so rather than updating that it made more sense to redo it all.

In short what changed:
- More API implemented than before, but nn_boss is very complex so we are still missing stuff (e.g. PlayReports and Task scheduling)
- Avoids redownloading nbdl files if they are already present locally (matches IOSU behavior)
- The API should be more robust in general and file hashes are now verified
- Emulated IOSU interface is compatible with nn_boss.rpl
- Added an UI option to clear the SpotPass cache
2025-10-30 16:24:09 +01:00
oltolm
de4bf7c2c1
refactor: use concepts instead of SFINAE (#1652) 2025-08-25 01:33:46 +02:00
Kevin Reinholz
4efa40c51c
Make it easy to build Cemu on BSD (#1632) 2025-07-23 08:59:09 +02:00
SSimco
67de63bed6
UI+build: Isolate wxWidgets code from non-GUI code (#1633) 2025-07-15 04:28:41 +02:00
Exverge
00ff5549d9
General aarch64 improvements & Apple Silicon support (#1255) 2025-06-18 10:36:05 +02:00
oltolm
c8ffff8f41
Replace basic_string<> of betype with std::vector (#1601) 2025-06-18 10:34:06 +02:00
oltolm
2f02fda9ea
Refactor to use Microsoft::WRL::ComPtr (#1599) 2025-06-16 23:25:06 +02:00
Exzap
28ea70b6d8 GX2+TCL: Reimplement command buffer submission
- GX2 utilizes TCL(.rpl) API for command submission instead of directly writing to an internal GPU fifo
- Submission & retire timestamps are correctly implemented as incremental counters
- Command buffering behaviour matches console
- Fixes race conditions on aarch64
2025-05-17 21:35:42 +02:00
Exzap
07cd402531
Update precompiled.h 2025-01-12 18:33:15 +01:00
Exzap
8dd809d725
Latte: Implement better index caching (#1443) 2025-01-12 12:39:02 +01:00
capitalistspz
47001ad233
Make MEMPTR<T> a little more T*-like (#1385) 2024-10-30 23:10:32 +01:00
capitalistspz
8508c62540
Various smaller code improvements (#1343) 2024-09-17 02:00:26 +02:00
Exzap
1234e2c118
Preparations for 2.1 (#1306) 2024-08-26 11:43:38 +02:00
Exzap
e02cc42d67 COS: Implement PPC va_list, va_arg and update related functions 2024-08-13 01:00:56 +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
da8fd5b7c7 nn_save: Refactor and modernize code 2024-05-29 00:07:37 +02:00
GaryOderNichts
964d2acb44 Filestream_unix: Include cstdarg 2024-05-18 20:47:09 +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
379950d185 coreinit+nn_save: Cleanup some legacy code 2024-05-01 05:06:50 +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
goeiecool9999
ccabd93159
Linux: Exit on SIGTERM (#1116) 2024-03-11 02:13:53 +01:00
goeiecool9999
e1435066ee
OpenGL: Fix crash related to wxWidgets handling of vsync (#1112) 2024-03-11 00:57:31 +01:00
GaryOderNichts
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
df282ab230 Latte: Clean up OpenGL relics in shared render code 2023-12-13 12:45:20 +01: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
0d71885c88 nn_fp: Full rework of friend service 2023-10-17 05:26:30 +02:00
Exzap
757d458161 Compatibility with fmtlib 10.1.x 2023-10-02 18:53:00 +02:00
Exzap
8bb7ce098c
Bump CI clang version to 15 + workaround for unsafe fiber optimizations (#982) 2023-09-29 17:17:28 +02:00
Exzap
abce406ee8 Refactor more wstring instances to utf8-encoded string 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
4d6b72b353 Latte: Very minor refactor + optimization 2023-09-29 06:48:10 +02:00
Exzap
0d96255bae nn_olv: More work on post API 2023-08-03 20:31:12 +02:00
Exzap
808d1bb424 Add debug asserts for invalid MEMPTR
Also fixed some corruptions this uncovered
2023-06-15 22:36:35 +02:00
Maschell
f1ebfa9941
coreinit: Implement several FSA functions and fix some bugs (#844) 2023-06-15 21:05:16 +02:00
Exzap
072c18a6e3 Improve exception logging on posix
Fix compile errors
2023-04-06 07:33:41 +02:00
Exzap
e803c6be47 Use attribute for AES-NI instead of -maes option 2023-03-13 05:34:53 +01:00
Crementif
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
Exzap
f3ff919be2
Code clean up + replace some wstring instances with utf8 (#640) 2023-01-29 13:53:31 +01:00
Exzap
387b712959 Logging: Add TextureReadback logtype and clean up code 2023-01-27 09:57:10 +00:00
Tillsunset
058d11b49b
Optimized timer code for macOS (#576) 2022-12-15 10:28:44 +01:00
Elijah
5a143c7b4b
Linux/MacOS: Use faster clock_gettime() for tick_cached() (#563) 2022-12-08 17:08:15 +01:00
Exzap
2c81d240a5
Make codebase more CPU-agnostic + MacOS disclaimer (#559) 2022-12-07 01:48:24 +01:00
goeiecool9999
e9d10a9581
Linux+OpenGL: Implement GUI vsync setting (#477) 2022-11-13 08:29:25 +01:00
Tillsunset
5adb1e9618
Add commit hash to build name on build check workflow (#463) 2022-11-07 02:47:59 +01:00
goeiecool9999
9df1325d14
Linux: Resolve backtrace symbols directly from .symtab instead of .dynsym (#385) 2022-10-20 13:12:16 +02:00
Exzap
f65dbe8437 Fix encoding error in input profile filenames
- Controller profile filenames now encode unicode characters correctly
- Removed dependency on boost::filesystem. There is still an indirect dependency on it from another boost module it seems
- Refactored some code to use FileStream instead of ifstream/ofstream
2022-10-12 14:27:01 +02:00