Commit graph

781 commits

Author SHA1 Message Date
Exzap
6cdcef880b PPCRec: Fix single segment loop not being detected
Also removed associatedPPCAddress field from IMLInstruction as it's no longer used
2025-04-26 00:22:35 +02:00
Exzap
bb6b18d78f PPCRec: Unify BCCTR and BCLR code
Instead of having fixed macros for BCCTR/BCCTRL/BCLR/BCLRL we now have only one single macro instruction that takes the jump destination as a register parameter.
This also allows us to reuse an already loaded LR register (by something like MTLR) instead of loading it again from memory.

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

Current limitations:
- BL inlining not implemented
- MFTB not implemented
- BCCTR and BCLR are only partially implemented

Undo vcpkg change
2025-04-26 00:22:35 +02:00
Exzap
0622631868 PPCRec: Move X64 files into subdirectory and rename 2025-04-26 00:22:35 +02:00
Exzap
da08eda506 PPCRec: Emit x86 movd for non-AVX + more restructuring 2025-04-26 00:22:35 +02:00
Exzap
411a83799c PPCRec: Move IML register allocator 2025-04-26 00:22:35 +02:00
Exzap
231b5c5dc3 PPCRec: Move IML optimizer file 2025-04-26 00:22:35 +02:00
Exzap
14d82ae4a5 PPCRec: Move analyzer file + move some funcs to IMLInstruction 2025-04-26 00:22:35 +02:00
Exzap
f95180d0fc PPCRec: Move debug printing + smaller clean up 2025-04-26 00:22:35 +02:00
Exzap
faf6c17438 PPCRec: Rename IML structs for better clarity 2025-04-26 00:22:34 +02:00
Exzap
4abd5127c0 PPCRec: Move Segment and Instruction struct into separate files 2025-04-26 00:22:34 +02:00
Exzap
ce5d010611 PPCRec: Use vector for instruction list 2025-04-26 00:22:34 +02:00
Exzap
d42ea6e5a8 PPCRec: Use vector for segment list + deduplicate RA file 2025-04-26 00:22:34 +02:00
Exzap
bbba516f08 Latte: Fix race condition on close during game boot 2025-04-26 00:22:34 +02:00
Exzap
06233e3462 UI: Fix wxWidgets debug assert
Some checks failed
Build check / build (push) Failing after 0s
Generate translation template / generate-pot (push) Failing after 36s
Adding the same component multiple times is not allowed. Use sizers instead
2025-04-16 14:36:11 +02:00
Exzap
4972381edc Vulkan: Fix imgui validation error when sRGB framebuffer is used 2025-04-15 22:46:19 +02:00
Exzap
cd6eb1097b Vulkan: Fix a validation error + minor code refactor
We were using VK_EXT_DEPTH_CLIP_ENABLE but didn't actually request it.

Also fixed an assert when closing Cemu caused by incorrectly tracking the number of allocated pipelines
2025-04-15 21:10:11 +02:00
Exzap
c4eab08f30 Update vcpkg
Some checks failed
Build check / build (push) Failing after 0s
Generate translation template / generate-pot (push) Failing after 1s
2025-04-03 19:11:14 +02:00
mitoposter
57ff99ce53
cubeb: Show default device option even if enumerating devices fails (#1515)
Some checks failed
Build check / build (push) Failing after 0s
Generate translation template / generate-pot (push) Failing after 36s
2025-03-19 17:06:55 +01:00
capitalistspz
8b5cafa98e
Wiimote/L2CAP: More accurate descriptions for descriptors (#1512) 2025-03-13 01:09:45 +01:00
Crementif
186e92221a
debugger: allow printing registers using logging breakpoint placeholders (#1510)
This allows a savy user, developer or modder to change the comment field of a logging breakpoint to include placeholders such as {r3} or {f3} to log the register values whenever that code is hit.
2025-03-07 23:40:17 +01:00
goeiecool9999
31d2db6f78 OpenGL: Add explicit/matching qualifiers in output shader interface
fixes issues with old intel drivers
2025-03-05 22:23:06 +01:00
capitalistspz
ebb5ab53e2
Add menu item for opening shader cache directory (#1494)
Some checks failed
Build check / build (push) Failing after 0s
Generate translation template / generate-pot (push) Failing after 8s
2025-02-14 20:56:51 +01:00
capitalistspz
a6fb0a48eb
BUILD.md: Provide more info about build configuration flags (#1486) 2025-02-04 10:56:33 +01:00
Exzap
ec2d7c086a coreinit: Clean up time functions
Some checks failed
Generate translation template / generate-pot (push) Failing after 34s
Build check / build (push) Failing after 40s
2025-01-30 03:49:17 +01:00
Exzap
c714e8cb6b coreinit: Time to tick conversion is unsigned
The result is treated as signed in most cases, but the calculation uses unsigned arithmetic.

As a concrete example where this matters, DS VC passes -1 (2^64-1) to OSWaitEventWithTimeout which internally causes an overflow. But only with unsigned arithmetic this will result in a large positive number that behaves like the intended infinite timeout. With signed arithmetic the result is negative and the events will timeout immediately.
2025-01-30 03:32:24 +01:00
goeiecool9999
e834515f43
Vulkan: Improve post-shutdown cleanup and minor improvements (#1401) 2025-01-23 21:20:03 +01:00
Exzap
4f9eea07e0 CI: Update action version 2025-01-23 21:06:07 +01:00
goeiecool9999
372c314f06 fix building with fmt11 and GCC 2025-01-23 21:03:11 +01:00
Exzap
5bd253a1f8 Revert "Fix building against fmt 11.1.0 (#1474)"
Reverting commit 4ac65159ef because game profile enums use the stringifying formatters from config.h and are not supposed to store raw integers
2025-01-23 17:33:06 +01:00
Alexandre Bouvier
4ac65159ef
Fix building against fmt 11.1.0 (#1474) 2025-01-16 12:54:29 +01:00
Joshua de Reeper
eab1b24320
nsyshid: Initialise interface index as 0 (#1473) 2025-01-12 20:20:48 +01:00
Exzap
07cd402531
Update precompiled.h 2025-01-12 18:33:15 +01:00
Joshua de Reeper
0a59085021
nsyshid: Make Libusb the Windows backend (#1471) 2025-01-12 14:33:24 +01:00
Exzap
8dd809d725
Latte: Implement better index caching (#1443) 2025-01-12 12:39:02 +01:00
rcaridade145
1923b7a7c4
Vulkan: Added R5_G6_B5_UNORM to supported readback formats (#1430) 2025-01-12 12:37:56 +01:00
brysma1
f61539a262
Update build instructions for fedora and add troubleshooting step for alternative architectures (#1468) 2025-01-08 04:22:55 +01:00
Crementif
92021db230
Use one CPU emulation thread for --force-interpreter (#1467) 2025-01-05 04:08:13 +01:00
Crementif
4b792aa4d2
debug: Fix shader dumping (#1466) 2025-01-04 20:38:42 +01:00
capitalistspz
1e30d72658
build: Add ALLOW_PORTABLE flag (#1464)
* Add ALLOW_PORTABLE cmake flag
* Also check that `portable` is a directory
2024-12-30 18:49:51 +01:00
Mike Lothian
2b0cbf7f6b
Fix building against Boost 1.87.0 (#1455) 2024-12-18 22:15:42 +01:00
goeiecool9999
3738ccd2e6
Play bootSound.btsnd while shaders/pipelines are compiling (#1047) 2024-12-18 15:55:23 +01:00
Exzap
b53b223ba9 Vulkan: Use cache for sampler objects 2024-12-16 13:05:22 +01:00
Exzap
6aaad1eb83 Debugger: Added right click context menu to disasm view + small fixes 2024-12-16 13:05:22 +01:00
Exzap
adab729f43 UI: Correctly handle unicode paths during save export 2024-12-16 13:05:22 +01:00
capitalistspz
dd0af0a56f
Linux: Allow connecting Wiimotes via L2CAP (#1353) 2024-12-07 12:02:40 +01:00
Exzap
934cb54605 Properly check if MLC is writeable 2024-12-07 10:26:17 +01:00
Exzap
356cf0e5e0 Multiple smaller HLE improvements 2024-12-07 10:26:17 +01:00
Exzap
e2d0871ca3 Camera: Set error code in CAMInit
Fixes Hunter's Trophy 2 crashing on boot
2024-12-07 10:26:17 +01:00