- 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
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
- 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
- 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
* 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>
Removes the -DPUBLIC_RELEASE flag. Cemu's debug asserts are now only enabled if the build configuration is Debug. Similarly, on Windows the console is only shown for Debug builds.
When a game tries to generate Miis without the FFL files being dumped (<mlc>/sys/title/0005001b/10056000/content/) it will cause it to create and use a texture with invalid parameters.
This workaround catches and replaces bad texture parameters to avoid crashing further down the line.
Resolves crashes in Sonic Lost World, Super Mario 3D World and probably a few others.
We had this workaround in pre-2.0 Cemu already but it was dropped during refactoring.