Commit Graph

27572 Commits

Author SHA1 Message Date
Zephyron
7a9a8851ce Merge branch 'update/about-section' into 'main'
update: About Section

See merge request citron/emulator!111
2025-10-23 12:32:57 +10:00
collecting
49f18763d8 update: About Section 2025-10-22 18:14:41 +00:00
Zephyron
d5081c3919 fix: implement missing shader recompiler instructions
Resolves compilation errors in move_register.cpp by using proper
register offset approach instead of non-existent Y/Z/W methods.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 21:13:00 +10:00
Zephyron
c425e3b06f fix: implement missing shader recompiler instructions
- Implement FSWZADD NDV mode support by removing stubbed warning
- Add proper SAM and RAM instruction implementations (no-op with logging)
- Implement comprehensive masked move operations for all mask patterns
- Remove all shader recompiler stubbed instruction warnings

Thanks to Dr.Stug for providing the logs that identified these missing implementations.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 20:59:04 +10:00
Zephyron
4c7ee4ac3b fix: BSD socket assertion failure in PollImpl
Initialize PollFD.revents field to prevent assertion failures when
copying from read buffer. The assertion was failing because revents
contained uninitialized data from the buffer.

Thanks to Dr.Stug for providing the logs that identified this issue.

Fixes assertion failure at core\hle\service\sockets\bsd.cpp:564

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 20:47:24 +10:00
Zephyron
b27d22d3f6 Merge branch 'kernel/12gb-heap-support' into 'main'
kernel: Add 12 GiB heap support

See merge request citron/emulator!110
2025-10-22 15:07:13 +10:00
Zephyron
9c13799b49 kernel: Add 12 GiB heap support
- Increased heap region from 8 GiB to 12 GiB
- Fixed memory manager page reference count allocation
- Made resource region sizing dynamic for >8GB DRAM
- Increased physical address space bits to support 16GB

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 15:06:47 +10:00
Zephyron
8cc5aa143f fix: implement DeleteCacheStorage stub to prevent TOTK crashes
- Add stubbed DeleteCacheStorage function to FSP_SRV service
- Return success instead of causing assertion failure
- Prevents userspace PANIC when games attempt to delete cache storage

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 13:25:16 +10:00
Zephyron
7107f4cfd7 fix: autoloader null pointer dereferences and Windows API conflict
- Use VfsFilesystemCreateDirectoryWrapper to avoid Windows API collision
- Add null check for dest_file before accessing it
- Prevent crashes when file/directory creation fails during autoload

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-22 12:52:04 +10:00
Zephyron
9a4eefb5f0 Merge branch 'fix/build-resolve-errors' into 'main'
fix(build): Resolve multiple strict compiler errors (GCC +15)

See merge request citron/emulator!109
2025-10-22 11:24:59 +10:00
collecting
ca8c822b93 Fix configure_per_game.cpp 2025-10-22 01:22:18 +00:00
collecting
bcbe8fddfc Fix configure_per_game.h 2025-10-22 01:21:51 +00:00
collecting
c3492232c1 Fix patch_manager.cpp 2025-10-22 01:21:16 +00:00
collecting
bde2434956 Fix savedata_factory.cpp 2025-10-22 01:20:49 +00:00
Zephyron
f3be268a89 Merge branch 'feat_autoloader_wip' into 'main'
feat(fs): Implement Autoloader for game updates

See merge request citron/emulator!108
2025-10-22 10:03:01 +10:00
collecting
cb7b3f6625 rebase: Autoloader & XCI 2025-10-21 21:26:23 +00:00
collecting
5712217a09 rebase: Autoloader & XCI 2025-10-21 21:25:49 +00:00
collecting
e7b6954511 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 21:01:05 +00:00
collecting
06cb160c00 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:59:12 +00:00
collecting
9f71d092c8 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:57:41 +00:00
collecting
cd742e7633 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:55:16 +00:00
collecting
ab39e75ac1 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:54:17 +00:00
collecting
4db51f9353 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:52:26 +00:00
collecting
6cf31f1d68 feat(fs): Implement Autoloader (W.I.P.) 2025-10-21 20:35:00 +00:00
Zephyron
c6bdc01e95 Merge branch 'xci-trimmer' into 'main'
feat: Add XCI Trimmer and UI improvements

See merge request citron/emulator!107
2025-10-21 22:28:17 +10:00
Zephyron
e9b63b4b34 feat: Add XCI Trimmer and UI improvements
- Implement XCI file trimming with validation and Unicode support
- Add trimming options to File menu and game properties dialog
- Optimize rainbow mode performance globally (150ms timer, cached colors)
- Add horizontal scrolling to game properties dialog
- Fix compilation issues and improve code quality

Thanks to Citron Tester Tetsuya Takahashi (高橋 哲屋) for extensive testing and contributions to the XCI Trimmer implementation.

Co-authored-by: Tetsuya Takahashi <tetsuya@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-21 22:26:10 +10:00
Zephyron
a184f951e9 Merge branch 'auto-token-generation' into 'main'
feat: auto-generate multiplayer tokens

See merge request citron/emulator!106
2025-10-21 18:34:47 +10:00
Zephyron
caf1f93131 feat: auto-generate multiplayer tokens
Replace manual token verification with automatic UUID generation.
Tokens are now auto-generated on first save and can be reset via button.

- Remove verification logic and base64 encoding
- Add ResetToken() method with UUID generation
- Sync profile username to web service settings
- Simplify UI and improve error messages

Based on Torzu PRs #22 and #28.

Co-authored-by: anon <anon@noreply.localhost>
Co-authored-by: spectranator <spectranator@y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-21 18:34:18 +10:00
Zephyron
f6c2cfe69d Merge branch 'implement-library-applet-commands' into 'main'
am: Implement missing ILibraryAppletCreator and ILibraryAppletAccessor commands

See merge request citron/emulator!105
2025-10-21 18:01:38 +10:00
Zephyron
543dc05008 am: Implement missing ILibraryAppletCreator and ILibraryAppletAccessor commands
Adds support for newer firmware commands:
- ILibraryAppletCreator::CreateLibraryAppletEx (cmd 3) - Added in firmware 20.0.0+
  Takes an additional thread_id parameter compared to CreateLibraryApplet
- ILibraryAppletAccessor::Unknown90 (cmd 90) - Unknown command from newer firmware
  Stubbed with generic parameter logging

Fixes assertion: Unknown / unimplemented function '3': port='ILibraryAppletCreator'
Fixes assertion: Unknown / unimplemented function '90': port='ILibraryAppletAccessor'

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-21 18:01:05 +10:00
Zephyron
37515d753f Merge branch 'filesystem-accuracy' into 'main'
core/filesystem: Implement accurate SaveData system

See merge request citron/emulator!104
2025-10-21 17:50:33 +10:00
Zephyron
98c6ac8961 core/filesystem: Implement accurate SaveData system
- Add transactional ExtraData with journaling (6 service functions)
- Implement atomic commit with crash recovery
- Add HOS-compliant path normalization
- Fix all ResultUnknown returns and add 9 HOS error codes
- Add directory journaling with /0 (committed) and /1 (working)
- Implement cross-tree directory moves

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-21 17:49:59 +10:00
Zephyron
b85fd5fc73 renderer_vulkan: add Extended Dynamic State user setting
Add configurable EDS levels (Disabled/EDS1/EDS2/EDS3) to allow users to
troubleshoot graphics issues by controlling which Vulkan Extended Dynamic
State features are enabled. Defaults to EDS3 for maximum performance.

Implements setting in both desktop and Android frontends with proper
translations and descriptions.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 18:52:30 +10:00
Zephyron
ac21b19165 vulkan: fix flickering objects and texture corruption
- Fix critical memory barrier bug: add missing newLayout assignment in write_barrier
- Improve texture swizzling with dynamic block height calculation:
  * RGB565 format: use block_height_log2 = 3
  * Small textures (≤256x256): use block_height_log2 = 3
  * Add validation to prevent corruption from invalid sizes
- Enhance memory barriers with proper stage synchronization:
  * Add VK_ACCESS_SHADER_READ_BIT to source access mask
  * Use correct pipeline stages for transfer operations
  * Ensure proper layout transitions (UNDEFINED → TRANSFER_DST → SHADER_READ_ONLY)
- Fix descriptor set layout: use VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
- Add framebuffer dimension validation (max 8192x8192) to prevent crashes
- Add fallback mechanism for invalid texture data (raw memory copy)

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 18:44:07 +10:00
Zephyron
6d53fec8db discord: optimize RPC game image loading
- Remove blocking network timeout check that was causing 5-second delays
- Simplify logic to always attempt using Tinfoil game images
- Let Discord handle image loading and fallback gracefully
- Clean up URL formatting for better consistency
- Remove unnecessary network validation that caused false negatives

This fixes the issue where Discord RPC would fall back to default
Citron logo due to network timeouts, allowing game-specific artwork
to display properly from Tinfoil's CDN.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 17:31:20 +10:00
Zephyron
3f71089f6d ci: disable GitLab CI configuration
- Comment out all GitLab CI stages (build, test, package)
- Preserve original configuration for future reference
- Switch to GitHub Actions for CI/CD automation
- Prevents unnecessary automated builds on GitLab VPS

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 17:29:16 +10:00
Zephyron
99073c8e19 renderer_vulkan: Add conditional rendering control setting
Adds user option to disable Vulkan conditional rendering, which can fix
flickering objects in some games caused by rapidly toggled draw calls.

Changes:
- Add use_conditional_rendering setting (default: enabled)
- Guard conditional rendering functions with setting check using [[unlikely]]
- Early exit in Pause/Resume and Compare functions when disabled

Disabling this in Graphics (Advanced) fixes flickering at cost of performance.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 16:47:57 +10:00
Zephyron
dd49615a48 shader_recompiler: Add missing texture types for SURED instruction
The SURED (Surface Reduction) instruction can operate on cube maps and 3D
texture arrays which were previously missing from the Type enum, causing
shader translation failures.

Changes:
- Add ARRAY_3D and CUBE to Type enum
- Map ARRAY_3D to Color3D and CUBE to ColorCube in GetType()
- Update MakeCoords() to handle array and cube coordinate generation

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 16:09:03 +10:00
Zephyron
d8d54c5ccf shader_recompiler: Fix alpha-to-coverage fragment output interface
The Vulkan spec requires fragment shaders to declare an output covering
Location 0, Component 3 (alpha) when alpha-to-coverage is enabled. This change:

- Tracks alpha_to_coverage_enabled through RuntimeInfo from pipeline state
- Forces declaration of frag_color[0] with full RGBA when enabled
- Initializes alpha to 1.0 in shader epilogue if not explicitly written

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-17 16:07:35 +10:00
Zephyron
7dea15e642 Revert "fix: Prevent race condition on unmapped memory reads"
This reverts commit 13c60ebcde.

This needs a rework as it caused Shader Corruption On Many Titles
2025-10-16 17:40:53 +10:00
Zephyron
ab18e750d8 feat: Add ZIP firmware installation and update Android VVL to 1.4.328.1
Firmware Installation:
- Add OnInstallFirmwareFromZip() to install firmware from ZIP archives
- Implement ExtractZipToDirectory() with libarchive (primary) and PowerShell fallback (Windows)
- Add user dialog to choose between folder or ZIP installation
- Validate NCA files at ZIP root before installation
- Automatic cleanup of temporary extraction directory

Android Vulkan Validation Layers:
- Update from sdk-1.3.261.1 to vulkan-sdk-1.4.328.1
- Fix extraction path for new VVL archive structure
- Add file existence checks and improved error messages

Benefits:
- Users can install firmware directly from ZIP files
- No manual extraction required
- Better debugging on newer Android devices

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-16 16:31:49 +10:00
Zephyron
c64bcb3f82 Merge branch 'fix_linux_test_unit' into 'main'
fix: .gitlab-ci.yml

See merge request citron/emulator!103
2025-10-16 16:21:19 +10:00
collecting
c664d913dc fix: Re-add Package-Release 2025-10-16 01:59:30 +00:00
collecting
058df85af0 fix: .gitlab-ci.yml 2025-10-16 01:52:31 +00:00
Zephyron
f3374ea7e6 Merge branch 'unmapped_memory_fix' into 'main'
fix: Prevent race condition on unmapped memory reads

See merge request citron/emulator!99
2025-10-15 15:05:47 +10:00
collecting
13c60ebcde fix: Prevent race condition on unmapped memory reads 2025-10-15 04:24:03 +00:00
Zephyron
61ba432ac0 Merge branch 'resize_windows_fix' into 'main'
fix: Dialogs now correctly remember their window size

See merge request citron/emulator!98
2025-10-15 12:23:03 +10:00
Zephyron
038619c543 remove: first-time telemetry popup
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-14 15:56:20 +10:00
Zephyron
c15b6519d5 chore: replace wiki URLs with Discord support links
Replace all citron-emu.org/help and wiki URLs with discord.gg/citron
across Android resources (15+ languages) and desktop UI.

- Update app disclaimers, error messages, and help links
- Consolidate FAQ/Quickstart/Mods menu items into "Get Support"

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-10-13 13:59:48 +10:00
collecting
b162d63a1b fix: Resizable w/ Window Memory 2025-10-12 21:45:53 +00:00