109 Commits

Author SHA1 Message Date
Matt Borgerson 67cc79e663 apu: Add new DSP56300 emulator with JIT execution engine
- Fixes a few bugs in the existing C interpreter
- Adds a state abstraction layer to switch between engines at runtime
  and maintain snapshot compatibility
2026-06-11 19:27:21 -07:00
oltolm 3623bac7ed build/win32: fix mkvenv wheel path and C++ header include order
Fix Windows build issues in both Python env setup and UI C++ headers.

- Use a plain path for pip --find-links in python/scripts/mkvenv.py instead of a file:// URL, which is unreliable on Windows paths.
- Move qemu/osdep.h outside extern "C" blocks in ui/xemu-snapshots.h and ui/xui/common.hh so C++ compilation sees expected declarations/types without C-linkage wrapping side effects.
2026-06-08 23:30:24 -07:00
mborgerson e00c1511d1 ui: Account for pixel density and display scaling 2026-05-19 17:51:49 -07:00
Erik Abair 1425a8c39b ui: Do not pass missing paths to SDL_ShowOpenFileDialog
Passing two levels of invalid paths to `SDL_ShowOpenFileDialog` on Windows
causes a crash.  E.g., given a directory `d:\foo` that exists, passing
`D:\foo\bar\baz` will trigger the crash.

In this case, the `FileDialogCallbackWrapper` callback is invoked twice,
leading to a double-free.

Fixes #2785
2026-03-11 12:02:54 -07:00
Matt Borgerson a11d0c83a4 apu: Add frame timing debug 2026-02-16 00:39:57 -07:00
Matt Borgerson 3b7a83d64b ui: Handle main window refresh independently
- Cleanup various dead code and minor restructure for clarity
- Separate host and guest updates
- Fix freezes while moving or resizing the main window on Windows by
  registering event watch callback
2026-01-31 13:17:57 -07:00
oltolm b64c19a0ed ui: Fix size of m_config_info_text passed to InputTextMultiline 2026-01-22 20:16:26 -07:00
Matt Borgerson cc4329da8d ui: Migrate xemu_get_os_platform to SDL_GetPlatform 2026-01-21 18:40:07 -07:00
Matt Borgerson 214f1fed0f ui: Migrate file selection dialogs to SDL3's FileDialog API 2026-01-21 18:40:07 -07:00
Matt Borgerson 0ae7ee7647 ui: Migrate to SDL3 2026-01-21 18:40:07 -07:00
Matt Borgerson fba182ab01 ui: Show current/latest version in updater, link to release notes 2026-01-21 17:06:15 -07:00
Matt Borgerson ec7f5e438a ui: Fetch latest release info via GitHub API 2026-01-21 17:06:15 -07:00
Matt Borgerson 24a4218752 ui: Make some helper functions static 2026-01-18 19:08:17 -07:00
Matt Borgerson 704ece9ac6 Merge QEMU v10.2.0 2026-01-18 16:36:55 -07:00
Matt Borgerson 70d95d879f ui: Make 'Exclusive Fullscreen' option configurable 2026-01-17 20:36:44 -07:00
Matt Borgerson e409f7afd9 ui: Drop xemu branch tracking 2026-01-04 23:38:25 -07:00
antangelo 47b25fb8fb ui: Fix use-after-free when new controller mapping is added
When a new controller mapping is added to the controller mapping array
in the xemu config, the array is reallocated, and any existing pointers
become invalid and must be reset.
2025-12-27 23:34:39 -07:00
Matt Borgerson 289e4db0bd ui: Replace xemu_open_web_browser with SDL_OpenURL 2025-12-27 13:36:44 -07:00
jyetcv 0c2462c5d7 ui: Add display filter configuration 2025-12-26 14:22:28 -07:00
antangelo aed1fa4ac6 ui: Add controller/keyboard input mapping configuration 2025-12-25 14:54:30 -07:00
oltolm d0478b6154 ui: Support fullscreen toggle via F11 2025-12-23 14:46:51 -07:00
Igor Leonovich 2cf036ec7f ui: Remove legacy macOS-specific shortcut handling
Ctrl/Cmd mapping on macOS is now handled internally by Dear ImGui
2025-12-18 16:53:55 -07:00
Erik Abair 19f18873d9 ui: Add xiso files to loader menu 2025-10-15 21:17:27 -04:00
Trent Seed 705b5d4759 ui: Add games directory to popup-menu 2025-10-15 21:17:27 -04:00
Matt Borgerson c11c098ec6 ui: Add labels to emulated/input device combos 2025-07-02 13:32:38 -07:00
Matt Borgerson 7d9739df4c apu/vp: Make number of voice workers dynamic
Adds a new config option to control number of workers. If the value of
the option is 0 (default), then the logical CPU count, as reported by
SDL, is used.
2025-06-20 17:41:24 -07:00
Erik Abair 381bcfcf63 ui: Add .xiso to load disc file filter 2025-06-17 11:57:13 -07:00
Matt Borgerson ba297f3b69 mcpx: Move APU components to hw/xbox/mcpx/apu 2025-06-03 19:36:08 -07:00
Matt Borgerson 395d136364 mcpx: Cleanup monitor 2025-06-03 19:36:08 -07:00
Matt Borgerson 26c451fc36 mcpx: Process voices concurrently 2025-06-03 01:54:09 -07:00
Matt Borgerson 344f7da132 mcpx: Support 3D voice HRTF filtering 2025-05-31 17:16:54 -07:00
Shiralyn ef1b08d79d ui: Add "allow vibration" input setting 2025-05-20 11:37:29 -07:00
Erik Abair bd3cd78ae4 ui: Toggle fullscreen on mouse double click 2025-05-15 09:06:55 -07:00
Erik Abair 428c975f09 nv2a: Allow multiframe RenderDoc captures with nv2a traces
Allows multiple frames to be captured at once by holding shift while pressing
F10.

Temporarily toggles nv2a trace messages if control is held while pressing F10.
2025-05-15 08:37:13 -07:00
Matt Borgerson 45078ef51f ui: InputTextMultiline buf_size should include the null-terminator 2025-03-08 04:00:18 -07:00
Matt Borgerson 355228913c meson: Update imgui,implot 2025-03-08 04:00:18 -07:00
Alexandre Bouvier 7b9b7a0c25 meson: Optionally use system tomlplusplus, xxhash, json 2025-03-08 00:55:46 -07:00
Matt Borgerson 8d2c1dbc32 ui: Migrate updater from httplib to libcurl wrapper 2025-03-07 22:12:49 -07:00
Matt Borgerson f6de4f03d7 ui: Migrate reporter from httplib to libcurl wrapper 2025-03-07 22:12:49 -07:00
Matt Borgerson 046d127f31 ui: Trim FontAwesome font to glyphs in use (save 940KiB) 2025-03-06 03:00:45 -07:00
Daniel Cook 33046acd82 ui: Add 720x480 resolution to Window size options 2025-02-15 16:17:58 -07:00
coldhex 0427ae8cfc mcpx: Implement APU multipass voice processing
Voice Processor (VP) multipass feature allows configuring lists of voices
that are first mixed (in order) into a designated mixbin which is then used
as a sample source when processing voices with multipass flag set to true
in NV_PAVS_VOICE_CFG_FMT. Setting correct voice order in lists is the
responsibility of the game/application and in practice is handled by the
DirectSound library. The multipass mixbin is hardcoded to 31 in
DirectSound, but hardware would allow other bins.

This implementation also adds additional info to audio debug UI to see what
the source and destination voices involved are. The info is only shown
when DSP processing is off, i.e. "VP Only" (MON_VP) is selected. This is
because storing the voice numbers requires additional digging which is
required for MON_VP anyway and therefore is free. The multipass feature
itself works fine with DSP (i.e. GP and EP) enabled, only the additional
debug info is not shown.
2025-02-15 15:01:29 -07:00
Fred Hallock 191bc40f70 xid: Add Xbox Controller S 2025-01-25 20:48:58 -07:00
Matt Borgerson f4482d3ced ui: Fix variable shadowing 2025-01-07 00:52:51 -07:00
Matt Borgerson e93bb37177 ui: Fix variable shadowing 2025-01-07 00:52:51 -07:00
Matt Borgerson 2558bc53a0 ui: Drop redundant SetCursorPos(GetCursorPos()) 2025-01-07 00:52:51 -07:00
Matt Borgerson 4c5858bd20 ui: Drop duplicate declaration of xemu_monitor_init 2025-01-07 00:52:51 -07:00
Matt Borgerson 76fce2b066 meson: Migrate host os checks to use 'host_os' var 2025-01-06 23:05:53 -07:00
Matt Borgerson 084b40fc53 meson: Migrate cpp-httplib submodule to a subproject 2025-01-02 19:07:25 -07:00
Matt Borgerson 0c5b41d6f7 ui: Add menubar backend selection 2024-12-31 01:37:05 -07:00