2606 Commits

Author SHA1 Message Date
50fd739c06 ci: add x86-64 FreeBSD and NetBSD jobs 2025-09-12 11:44:26 +01:00
5d36d8296e update log2(size) in melonDLDI (it's more than 512 bytes long) 2025-09-11 00:13:49 +02:00
7e60fee91b Create OpenBSD CI using vm-actions (#2423) 2025-09-08 00:15:49 +01:00
4d635e7f2d fix: GDB stub reading wrong code for vCont packet (#2388)
* fix: GDB stub reading wrong code for vCont packet

* Implementation did contain bug, fixup
2025-09-03 17:38:33 +02:00
7ed33b4d93 fix possible crash in SD/MMC code 2025-08-30 14:18:58 +02:00
631080aa4e JIT: fix building with ENABLE_JIT on OpenBSD targets (#2398)
* sockaddr_in is a forward declaration on *BSD, explicitly include the correct header

* fix building with ENABLE_JIT on OpenBSD targets

* add wxallowed linker flag for openbsd targets

* OpenBSD armjit sc_exr -> sc_elr

* wxallowed -> wxneeded

* force mmap for jit on OpenBSD

* disable fastmem on OpenBSD

* fix typo in disabling fastmem for OpenBSD

* add missing space in this if
2025-08-29 22:27:11 +02:00
18a4885c22 JIT: fastmem: handle W^X codemem in fault handler
Set the protection on the code memory to RW when the fault handler
rewrites code, and set it back to RX, the protection prior to the
interrupt, after doing so.

This fixes a segfault that occurred on NetBSD, due to its PaX MPROTECT
policy, when trying to run fastmem.

This could potentially be the reason as to why fastmem does not work on
Apple Silicon Macs, although I am unable to confirm as I do not possess
such a device to test with.
2025-08-29 17:41:41 +01:00
eaa477de7d NDS: call JIT.Reset() instead of JIT.ResetBlockCache()
Call the reset function of the JIT object instead of resetting the block
cache directly when disabling the JIT compiler, to ensure that the
protection on the code memory is switched to RW as required.

It is imperative that calls to ResetBlockCache() directly must be
preceeded by JitEnableWrite() to comply with executable-space protection
on systems that require it.

This fixes a segfault on NetBSD, due its PaX MPROTECT policy, that
occured when disabling JIT during runtime.
2025-08-29 17:26:41 +01:00
435c06e55d JIT: add support for PaX MPROTECT on NetBSD
Call mprotect to switch the code memory protection between RW and RX
when needed on NetBSD, which is required due to PaX MPROTECT being
enabled on all binaries by default by the operating system.

This removes the need to run `paxctl +m melonDS`.

This patch was tested on a x64 VM running NetBSD 10.1. I can confirm
that this fixes JIT on NetBSD, however fastmem does not work as of yet
due to a segfault.

Although invoking mprotect does incur a performance penalty, it is still
faster than running without JIT.

A potentially faster alternative is to back the JIT code memory with an
anonymous file descriptor in physical memory, then map this physical
memory to two virtual memory addresses: one with RW permissions for code
generation, the other with RX permissions for code execution.

Instead of using platform-specific methods to create the anonymous file
descriptor, such as memfd_create on Linux, we could copy a 'trick' that
we use in fastmem already: calling shm_open, a POSIX standard, with a
random name, and immediately unlinking it.

However, this would add some more complexity and would be a bit harder
to implement. For now, this works fine. Perhaps another time...
2025-08-29 16:48:03 +01:00
3e1e8bd38e JIT: x64: ensure writable code memory after alloc
Call JitEnableWrite() immediately following the allocation of the JIT
code memory in the x64 compiler to make certain that it is in RW mode.

This call is made following allocation in the A64 compiler already, see
9ad3d42 ("hopefully fix macos").

Switching the memory protection between RW and RX is required on systems
that enforce an executable-space protection policy, such as NetBSD and
OpenBSD, with PaX MPROTECT and W^X respectively.

However, adherence to these policies for these platforms is not
implemented yet, so at this moment in time this call should be a no-op
on x64.
2025-08-28 18:56:20 +01:00
3d460cc301 Revert "Fix FF_ReadStorage/FF_WriteStorage callback return value (#2400)" (#2421)
This reverts commit 18bffde207.
2025-08-28 19:50:47 +02:00
367d05b302 ci: vcpkg improvements
* Upgrade to 2025.07.25
* Configure vcpkg settings in vcpkg.json, this avoids needing to
  duplicate the vcpkg hash used in several places, and also avoids
  needing to set overlay ports/triplets directories from CMake
* Add caching workaround so that builds won't take forever every time
* Build on windows-2025
2025-08-16 09:13:27 +02:00
af84734e57 nix: add faad2 dependency, update packages while we're at it 2025-08-16 00:24:17 +02:00
2abdaaf906 crap 2025-08-15 23:20:24 +02:00
398cbac772 doesn't seem to be a good change 2025-08-15 22:32:43 +02:00
8a6fa3a9ef make input system thread-safe 2025-08-15 15:48:13 +02:00
9120d19411 blarg 2025-08-15 13:07:15 +02:00
0848091e2f add faad dep to build instructions 2025-08-15 13:04:38 +02:00
1a9a1351ac DSP HLE (#2404)
* DSP HLE (support for AAC, G711 and Graphics ucodes)
* DSP audio output and mic input (both HLE and LLE)
* DSi I2S interface and mic input
* smarter mic input system
2025-08-15 12:40:14 +02:00
c6017472d8 ROMInfoDialog: make DS banner more accurate
Change some styling to make the DS banner box in the ROM Info
dialog look more like the real banner box in the BIOS by:

- Adding the stripes inside the text box
- Adding the banded background in the box as a whole
- Adding the inner white border
- Disabling anti-aliasing on the title font
- Reducing letter spacing and line height
2025-08-14 23:28:55 +01:00
f9e46fdc29 Windows: Quick and Dirty Build Fix (#2401)
An upper version limit should be set here again when there is a new GCC release that fixes the bug.
2025-08-10 22:41:43 +02:00
9f96ac6673 Fix save type for Legacy of Ys - Books I & II (#2391)
Reported on Discord for BizHawk that going into Ys II after doing Ys I would result in a corrupted save. DeSmuMe reportedly doesn't have this issue, and it has a 64KiB save instead.
2025-08-10 13:53:52 +02:00
18bffde207 Fix FF_ReadStorage/FF_WriteStorage callback return value (#2400)
The return value for these callbacks is in sectors, not bytes.
2025-08-10 13:51:46 +02:00
90e7601c78 Fixed 8-bit NO$GBA debug register write. (#2399)
Signed-off-by: FrankHB <frankhb1989@gmail.com>
2025-08-10 13:51:15 +02:00
dffc2d7cc5 sockaddr_in is a forward declaration on *BSD, explicitly include the correct header 2025-08-09 19:12:50 +02:00
111fc6a343 (finally) change software renderer to use 32-bit division 2025-08-08 19:51:04 +02:00
13a9825c9a le plus important (#2375)
blarg
2025-07-13 22:34:38 +02:00
e099cfdc5a BAHAHAHAAHAHAHAHAAHAHAHA-*~°+| 1.0 2025-07-08 23:11:36 +02:00
608a4151b8 fix full bios boot not being set properly on initial DSI class creation (#2366) 2025-07-08 21:39:43 +02:00
3263ab11c2 Make SPU audio single-buffered (audio latency improvement) (#2286)
* SPU audio latency improvements

Basically reverts audio buffer handling to what it was before commit 05b94ef, but with the mutexes kept for thread safety (which the referenced commit was trying to do).

The SPU audio buffer should still be thread-safe in theory... right?

* Audio output improvements

This commit changes the audio output buffer to be configured by a variable, and fixes the case where the sound driver may change the buffer size after calling SDL_OpenAudioDevice (e.g. if the buffer size is set too low for the driver to handle).
2025-07-08 19:52:36 +02:00
72cba5daab camera: misc fix 2025-07-08 16:04:17 +02:00
f8b4871900 oops 2025-07-07 16:19:56 +02:00
e5741f992a camera: fix some misc issues 2025-07-07 16:15:58 +02:00
7499958ad0 camera: revise interface behavior to be more accurate
* there are two FIFO buffers (finally fixes Let's Golf)
* fix issues with camera start condition/cnt bit15
* add camera interface state to savestate
2025-07-07 14:48:53 +02:00
85d9202633 push this back tho... 2025-07-07 12:21:47 +02:00
1f51f27d44 Revert "camera: model FIFO more accurately (avoids weird bugs when DMA fails)"
This reverts commit 2cb07bf126.
2025-07-07 12:20:11 +02:00
85dcf65231 DSi: add support for SCFG_EXT bit 13 (32-bit VRAM bus) 2025-07-07 02:47:46 +02:00
2cb07bf126 camera: model FIFO more accurately (avoids weird bugs when DMA fails) 2025-07-07 02:30:01 +02:00
16d1464d19 camera: make timings more realistic (fixes rolling in some games) 2025-07-05 00:14:11 +02:00
f352cf612a call MakeCurrent() before deiniting GL stuff (to avoid deiniting on the wrong context) 2025-06-28 22:55:48 +02:00
4aaea218c1 add a way to tell windows apart 2025-06-28 13:06:53 +02:00
44b0704063 fix video settings update on second instance secondary windows 2025-06-28 12:48:22 +02:00
2499ec36c2 window: undo last commit (was a trainwreck). explicitly close child windows to avoid GL issues. fix bug with window parenting in second multiplayer instances. 2025-06-28 12:37:53 +02:00
baad893bc0 window: move cleanup code to destructor (closeEvent() isn't called for children) 2025-06-28 03:48:42 +02:00
ec2f7ee838 fix issues with multi-window and OpenGL on Windows 2025-06-28 03:02:00 +02:00
005ef9c9fc camera: fix resolution selection code (could accidentally select a resolution like 640x360) 2025-06-26 23:04:14 +02:00
7b562f71b3 NDMA: fix IRQ in infinite repeat mode 2025-06-25 21:52:23 +02:00
fd279bedc5 huh 2025-06-24 16:51:33 +02:00
b2af96474f Merge remote-tracking branch 'origin/master' 2025-06-24 01:03:25 +02:00
8cd2d972ab DSP: fix PDATA reads being one off 2025-06-24 01:03:14 +02:00