Commit Graph

27793 Commits

Author SHA1 Message Date
Zephyron
be5c2f772c fix: Multiplayer network fixes and airplane mode
- Auto-select network interface for direct connect/host room
- Always recreate ENet client on join for fresh bindings
- Add airplane mode toggle (Desktop & Android)
- Fix JWT verification with empty verify_uid
- Improve content-type handling for JWT endpoints

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-10 17:16:45 +10:00
Zephyron
2943eebc9c Merge pull request 'feat(ui): add per-game cheat management tab with bulk toggle controls' (#30) from feature/cheat-toggle-ui into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/30
2025-11-07 09:18:17 +00:00
Zephyron
09f8c3a643 feat(ui): add per-game cheat management tab with bulk toggle controls
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-07 19:17:07 +10:00
Zephyron
5e1a136aa8 Merge pull request 'feat: implement multiplayer networking improvements for reduced latency' (#27) from feature/multiplayer-networking-improvements into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/27
2025-11-05 08:52:46 +00:00
Zephyron
5117ff3702 feat: implement multiplayer networking improvements for reduced latency
Major networking enhancements to improve multiplayer performance and
reduce desync issues in games like Mario Kart 8 Deluxe:

Network Performance:
- Add socket connection pooling in BSD service to reduce overhead
- Implement unreliable packet delivery for latency-sensitive game data
- Add packet reliability control for both ProxyPacket and LDNPacket
- Use ENET_PACKET_FLAG_UNSEQUENCED for small UDP packets (<1200 bytes)

Monitoring & Debugging:
- Add PacketStatistics struct to track sent/received/dropped packets
- Enhanced logging for proxy packet handling and socket lifecycle
- Periodic stats logging every 100 packets for diagnostics

Configuration:
- Update lobby_api_url and web_api_url to https://api.ynet-fun.xyz
- Add lobby API URL configuration support

Socket Management:
- Implement SocketPoolKey for efficient socket reuse
- Store domain/type/protocol info in FileDescriptor
- Max pool size limit (8 sockets per type) to prevent memory bloat
- Return closed sockets to pool when room is still connected

Protocol Updates:
- Add 'reliable' field to ProxyPacket and LDNPacket structures
- Update room.cpp packet handlers to respect reliability flags
- Maintain backward compatibility with default reliable=true

These changes significantly reduce packet latency for real-time game
traffic while maintaining reliability for control packets.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-05 18:52:06 +10:00
Zephyron
ee124b44e3 Merge pull request 'feat: add Snapdragon 8 Elite support and implement shader features' (#25) from feature/snapdragon-8-elite-support-and-shader-improvements into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/25
2025-11-04 10:43:32 +00:00
Zephyron
652a6a56ef feat: add Snapdragon 8 Elite support and implement shader features
- Add device detection for Snapdragon 8 Elite (device ID 0x43052c01)
- Disable shader float controls and 64-bit integer atomics on Qualcomm
  proprietary drivers to work around driver limitations
- Enable native BGR format support on S8 Elite (similar to S8 Gen 2)
- Implement VOTE_vtg instruction for vertex/tessellation/geometry shaders
  with proper single-thread semantics
- Replace stub warnings with detailed comments for FCSM_TR flow test and
  SR_WSCALEFACTOR special registers to document expected behavior

These changes improve compatibility with Qualcomm Snapdragon 8 Elite
devices and reduce spurious warnings by documenting shader features
that are correctly handled as conservative defaults.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-04 20:41:13 +10:00
Zephyron
4211689683 fix(set): stub ISettingsServer function 12 to fix AVGN 8-bit crash
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-04 17:43:52 +10:00
Collecting
b8021fa7e7 fix: Make Multiplayer Room Work even out of Game
Annoyed a few people that the Overlay was non-functional unless they were in-game. Now it works when not in-game.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-04 00:42:18 +00:00
Collecting
28a512eed0 revert/vcpkg
Tried adding ARM64 required stuff to see if it'd help but alas.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 21:16:57 +00:00
Collecting
c271b4f734 Update vcpkg.json
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 20:55:12 +00:00
Collecting
91369fb82d fix/arm64
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 20:48:54 +00:00
Collecting
2416632c32 revert/variable-fix
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 20:48:23 +00:00
Collecting
3ebed49194 fix/arm64
Last time i'm touching

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 20:23:26 +00:00
Collecting
4e9e0f9e65 fix/arm64
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 19:34:34 +00:00
Collecting
9571c14274 fix/arm64
Hopefully, otherwise I need to branch and figure this out.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 19:05:32 +00:00
Collecting
d52dd29233 fix/arm64
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 18:33:21 +00:00
Collecting
c85d9cfd57 fix/arm-64
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 18:25:00 +00:00
Collecting
a3a9d004a6 fix: ARM64 Support
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 17:08:01 +00:00
Collecting
38f8b04c04 add: ARM64 support for Windows
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 13:37:12 +00:00
Zephyron
a5024bb218 kernel: Use CheckMemoryStateContiguous in UnmapCodeMemory
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-03 16:19:46 +10:00
Collecting
e097974a66 fix: Race Condition when Updating UI/OS Theme
Testing and fiddling with our recent overhaul for changing OS/UI themes and updating on the fly resulting in a segmentation fault that also would not allow you to re-open the emulator unless changing back to the theme previously known by Citron, which obviously we don't want. Grabbed the core dump.

The backtrace pointed to a race condition in GMainWindow::UpdateUITheme, where a QTextStream was reading from a Qt resource stylesheet (.qss) that was being simultaneously reloaded by the theme change event. This led to an attempt to read from a dangling pointer.

This change resolves the issue by reading the entire stylesheet into memory in a single, atomic operation using f.readAll(). This prevents the underlying resource from becoming invalid during the read. The resulting QByteArray is explicitly converted to a QString via QString::fromUtf8 to satisfy Qt 6's stricter type requirements.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 03:05:28 +00:00
Collecting
424e4060bb Merge pull request 'fix(updater): Add General Tab Re-enable Checkbox For Updates If Previously Disabled For Start-up' (#20) from fix/re-enable-updater into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/20
2025-11-03 00:55:32 +00:00
Collecting
73094cdcdb fix/re-enable-updates
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 00:54:08 +00:00
Collecting
56ec56aa37 fix/re-enable-updates
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 00:53:37 +00:00
Collecting
846ae25af9 Merge pull request 'feat(updater): Add 'Don't check on startup' to update notification' (#19) from fix/auto-updater-check into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/19
2025-11-03 00:17:37 +00:00
Collecting
d1d93b7629 fix/check-for-updates
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 00:15:42 +00:00
Collecting
6aa483a9d2 fix/check-for-updates
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-03 00:14:47 +00:00
Zephyron
8c2865fe0f Update README.md
Signed-off-by: Zephyron <zephyron@noreply.localhost>
2025-11-02 05:59:22 +00:00
Collecting
94287b27cd Merge pull request 'fix: Adjust & Update Theming for Specific Files from Previous Commit' (#17) from fix/add-updated-files-themes into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/17
2025-11-02 05:19:24 +00:00
Collecting
729764ebe2 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 05:17:44 +00:00
Collecting
577385c98c fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 05:17:11 +00:00
Collecting
6d9e18eb3a fix/adjusted-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 05:15:49 +00:00
Collecting
34cdd95f45 Merge pull request 'feat(ui): Implement theme-aware overlays and fix UI color bugs' (#16) from fix/stylesheets-overlays-themes into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/16
2025-11-02 04:48:14 +00:00
Collecting
4e8c43e894 fix/adaptive-styling
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:45:21 +00:00
Collecting
800f791e79 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:44:31 +00:00
Collecting
ec6468553b fix/adaptive-styling
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:40:16 +00:00
Collecting
1a07eb4ad1 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:39:05 +00:00
Collecting
3413912a94 fix/themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:37:27 +00:00
Collecting
c4fcf0dfc7 fix/dynamic-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:36:42 +00:00
Collecting
fbaa366065 fix/dynamic-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:35:43 +00:00
Collecting
f8bb1c70b0 fix/multiplayer-overlay-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:35:00 +00:00
Collecting
49bc7e0c38 fix/dynamic-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:33:58 +00:00
Collecting
bcf3dd36b8 fix/dynamic-themes
Helps change theme to update during emulation.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:32:21 +00:00
Collecting
c42a8ed7b8 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:31:15 +00:00
Collecting
c48744092d fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:30:38 +00:00
Collecting
e4c1a003e3 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:29:43 +00:00
Collecting
02dec9f461 fix/light-dark-themes
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-11-02 04:28:51 +00:00
Zephyron
988f294e94 chore: bump version to 0.10.0
Signed-off-by: Zephyron <zephyron@citron-emu.org>
0.10.0
2025-11-02 13:38:49 +10:00
Collecting
2fde88b2b5 Merge pull request 'fix(ui): Make configuration dialogs respect in-app theme choice' (#15) from fix/themes into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/15
2025-11-02 02:08:37 +00:00