Commit Graph

27437 Commits

Author SHA1 Message Date
Zephyron
bd6dd7f0ff Merge branch 'controller-crash-grid-view-memory-leak' into 'master'
fix: Prevent controller crashes and memory leaks in game list grid view

See merge request citron/rewrite!36
2025-07-21 11:25:01 +00:00
Zephyron
0d05f64e79 fix: Prevent controller crashes and memory leaks in game list grid view
- Fix memory leak in PopulateGridView() and FilterGridView() by properly
  deleting old QStandardItemModel instances before creating new ones
- Add safety checks in controller navigation to prevent crashes when
  accessing uninitialized controller data
- Improve controller input handling to only send events to visible and
  properly initialized views
- Add null pointer checks in SetViewMode() to prevent crashes when
  setting current index on empty models
- Add proper cleanup in GameList destructor to prevent memory leaks
  on application shutdown

The main issue was that switching between list and grid views created
new models without properly cleaning up old ones, leading to memory
leaks. Additionally, controller navigation would send keyboard events
to both views simultaneously, causing crashes when one view was not
properly initialized or visible.

Fixes crashes when using controller navigation in grid view mode.

Thanks to Beta Testers acarajé & Hayate Yoshida (吉田 疾風) for finding the bug.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-21 21:23:51 +10:00
Zephyron
c7bc05f1d0 Merge branch 'macOS-compilation-fix' into 'master'
fix: Resolve compilation issues with fmt library and formatters

See merge request citron/rewrite!35
2025-07-16 05:45:22 +00:00
Zephyron
2e5f8c8e8d Merge branch 'cpp20-concepts-file-open' into 'master'
fix: constrain file.h Open templates with C++20 concepts

See merge request citron/rewrite!34
2025-07-16 05:42:11 +00:00
Zephyron
97490b0586 fix: constrain file.h Open templates with C++20 concepts
Add HasValueType concept to prevent compilation errors when using raw
pointers like const char* with Open() templates. The templates now only
participate in overload resolution for types that have a value_type
member (e.g., std::string, std::filesystem::path).

Fixes C2039 and C2651 errors on Windows builds.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-16 15:41:41 +10:00
Boss.sfc
0fb39034c1 fix: Resolve compilation issues with fmt library and formatters
Fix multiple compilation errors preventing successful build:

* Add const qualifier to custom fmt formatter functions across codebase
  - Updated formatters in logging, shader recompiler, texture cache, and other modules
  - Ensures compatibility with newer fmt library versions

* Add missing fmt/ranges.h includes for fmt::join usage
  - Fixed fmt::join calls in Vulkan renderer, GDB stub, NFC service, and main window
  - Resolves "no member named 'join' in namespace 'fmt'" errors

* Exclude unsupported platforms from Boost.Process usage in debugger
  - Extended conditional compilation to avoid Boost.Process where unavailable

* Fix type casting issues in AOC service manager
  - Resolved std::min type mismatch with explicit casting
2025-07-16 11:11:33 +07:00
Zephyron
25e8c0539c updater: Improve version detection with build system fallback
Add build system version detection as a fallback in GetCurrentVersion():
- Include common/scm_rev.h to access build version information
- Use Common::g_build_version when version.txt doesn't exist
- Automatically create version.txt with build version for future use
- Update comments to clarify version resolution priority

This ensures the updater can properly detect the current application
version even when version.txt hasn't been created yet, while maintaining
the existing priority system for version detection.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-12 09:23:29 +10:00
Zephyron
00c3e7aea5 fix: Implement two-stage update system to handle file-in-use errors
Replace direct file overwriting with a staging-based update mechanism to
resolve "file in use" errors during self-updates.

**Changes:**
- Stage updates to temporary directory instead of direct installation
- Apply staged updates on next application startup (before files are loaded)
- Add static methods for startup update detection and application
- Create update manifest to track staged update metadata
- Backup existing files before applying updates
- Update UI messaging to reflect staged update workflow

**Problem solved:**
The previous direct file replacement approach failed when trying to overwrite
DLLs and executables that were loaded into memory by the running process.
This two-stage approach stages files safely, then applies them on restart
when no files are in use.

**Workflow:**
1. Download and extract update to staging directory
2. Create manifest with update metadata
3. Show "Update ready" message to user
4. On next app startup: detect staged update, apply it, show success message
5. Clean up staging directory after successful application

This ensures reliable self-updates without file access conflicts.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-11 17:01:37 +10:00
Zephyron
5472256a2d Merge branch 'auto-updater-system' into 'master'
feat: Add automatic update system with background checking

See merge request citron/rewrite!33
2025-07-11 06:23:00 +00:00
Zephyron
9ef1c76a2c feat: Add automatic update system with background checking
Implement a complete auto-updater system for Citron with the following features:

- Add UpdaterService class for handling update checks, downloads, and installations
- Add UpdaterDialog with progress tracking and user interaction
- Support both .zip and .7z archives with Windows PowerShell fallback
- Automatic background update checking on startup (3-second delay)
- Silent notifications when updates are available
- Manual "Check for Updates" menu option in Help menu
- User setting to enable/disable automatic update checks (enabled by default)
- Graceful error handling with detailed logging
- Restart functionality after successful updates
- Libarchive integration for cross-platform archive support

The system uses HTTP URLs to bypass SSL library compatibility issues and
provides a smooth user experience with minimal interruption during automatic
checks. Manual updates show a full dialog with progress tracking and changelog
information.

Fixes update distribution workflow and keeps users informed of new releases.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-11 16:22:28 +10:00
Zephyron
ab26698b4e Merge branch 'audio-add-new-functions-services' into 'master'
audio: Implement missing audio services and functions

See merge request citron/rewrite!32
2025-07-10 08:03:25 +00:00
Zephyron
eb4da7a78c audio: Implement missing audio services and functions
New Services Added:
- auddev (IAudioSnoopManager) - Audio development/debugging service [6.0.0+]
  * EnableDspUsageMeasurement/GetDspStatistics with firmware version switching
  * DisableDspUsageMeasurement/GetAppletStateSummaries with firmware version switching
  * SetDspStatisticsParameter/GetDspStatisticsParameter [20.0.0+]
  * GetDspUsage [6.0.0-16.1.0]

- aud:a (IAudioSystemManagerForApplet) - System audio manager for applets [11.0.0+]
  * Applet resource user ID registration/management
  * Audio suspend/resume functionality
  * Per-applet volume controls (output/input/record)
  * GetAppletStateSummaries [18.0.0-19.0.1]

- aud:d (IAudioSystemManagerForDebugger) - System audio manager for debugging [11.0.0+]
  * RequestSuspendAudioForDebug/RequestResumeAudioForDebug

Enhanced Existing Services:
- audctl (IAudioController) - Added missing [19.0.0+] functions:
  * OverrideDefaultTargetForDebug [19.0.0-19.0.1]
  * SetForceOverrideExternalDeviceNameForDebug [19.0.0+]
  * ClearForceOverrideExternalDeviceNameForDebug [19.0.0+]
  * Fixed GetSystemInformationForDebug buffer handling

- IAudioDevice - Added missing [17.0.0+] and [18.0.0+] functions:
  * AcquireAudioInputDeviceNotification/ReleaseAudioInputDeviceNotification [17.0.0+]
  * AcquireAudioOutputDeviceNotification/ReleaseAudioOutputDeviceNotification [17.0.0+]
  * SetAudioDeviceOutputVolumeAutoTuneEnabled/IsAudioDeviceOutputVolumeAutoTuneEnabled [18.0.0+]

Technical Changes:
- Updated service registration in audio.cpp to replace placeholder services
- Added proper CMIF buffer handling with std::array<u8, SIZE> for InLargeData/OutLargeData
- Added firmware version annotations matching switchbrew documentation
- Implemented proper state management for all new services
- Added comprehensive error handling and logging

This implementation provides complete audio service coverage including the specifically requested GetDspStatisticsParameter function and numerous other missing functions that games expect to be available.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-10 18:00:59 +10:00
Zephyron
d709c878bc Merge branch 'bcat-add-new-functions-services' into 'master'
core/hle/service/bcat: Fix compilation errors and implement missing services

See merge request citron/rewrite!31
2025-07-05 13:16:14 +00:00
Zephyron
99cff6cb9c core/hle/service/bcat: Fix compilation errors and implement missing services
- Fix CMIF serialization alignment error in RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName by reordering parameters (DirectoryName before u64)
- Implement missing INotifierService and IDeliveryTaskSuspensionService classes with proper kernel event handling
- Add missing source files to CMakeLists.txt to resolve linker errors
- Update IServiceCreator to properly implement CreateDeliveryCacheProgressService methods instead of leaving them stubbed
- Add ProgressServiceBackend support to IServiceCreator with proper friend class access
- Fix kernel event creation by using KernelHelpers::ServiceContext instead of direct system calls
- Add proper includes for kernel_helpers.h and event management

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-05 23:12:39 +10:00
Zephyron
f1ba9df80a Merge branch 'glue-add-new-functions-services' into 'master'
hle/service: Implement missing Glue services for 20.0.0+ support

See merge request citron/rewrite!30
2025-07-01 10:09:20 +00:00
Zephyron
98d0c627e6 hle/service: Implement missing Glue services for 20.0.0+ support
- **ARP Service (arp:r/arp:w)**: Added 20.0.0+ function support
  * arp:r: GetApplicationInstanceUnregistrationNotifier, ListApplicationInstanceId,
    GetMicroApplicationInstanceId, GetApplicationCertificate, GetPreomiaApplicationLaunchProperty,
    GetPreomiaApplicationControlProperty
  * arp:w: AcquireApplicationProcessPropertyUpdater, AcquireApplicationCertificateUpdater,
    RegisterApplicationControlProperty
  * Added interface classes: IUnregistrationNotifier, IApplicationProcessPropertyUpdater,
    IApplicationCertificateUpdater

- **Platform Service Manager (pl:u)**: Added Switch 2 [S2] functions
  * Commands 2010, 2020, 2100 (Unknown2010, Unknown2020, OpenFont)

- **ECTX Service**: Added missing ectx:r service implementation
  * Registered ectx:r service alongside existing ectx:aw

- All functions properly stubbed
- Fixed PushIpcInterface usage with shared_ptr
- Command mappings follow switchbrew.org documentation
- Ensures compatibility with 20.0.0+ system versions

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-01 20:06:45 +10:00
Zephyron
fd6f3c0418 Merge branch 'am-add-new-functions-services' into 'master'
core/hle: Implement all missing AM (Applet Manager) service functions

See merge request citron/rewrite!29
2025-07-01 07:54:43 +00:00
Zephyron
2776962067 core/hle: Implement all missing AM (Applet Manager) service functions
Add complete implementation of missing functions and services from the Applet Manager services documentation, including 20.0.0+ functions.

Changes:
- IApplicationFunctions: Add functions 210-999 including 20.0.0+ function 460
  * GetLaunchRequiredVersionUpgrade, RequestToLaunchApplication
  * DeclareApplicationAlive, GetApplicationControlProperty
  * CreateApplicationResourceUsageSystemReportForDebug, etc.

- IHomeMenuFunctions: Add functions 300-910
  * RebootSystem, LaunchApplication, GetAppletLaunchedHistory
  * TakeScreenShotOfOwnLayerEx, CreateFloatingLibraryApplet, etc.

- IGlobalStateController: Add functions 50-400
  * VR mode functions, wireless priority mode, system button history
  * Operation mode changes, sleep/wake functionality, etc.

- ISelfController: Add functions 140-950
  * Recording functions, CPU boost, performance configuration
  * Migration services, album accessors, etc.

- ICommonStateGetter: Add functions 600-1063
  * Save data functions, cache storage, GPU error detection
  * Capture image functions, HDCP authentication, etc.

- Create new service classes:
  * IOverlayAppletProxy with IOverlayAppletFunctions
  * ISystemApplicationProxy for system applications

- Fix IAllSystemAppletProxiesService stub implementations:
  * OpenOverlayAppletProxy, OpenSystemApplicationProxy
  * CreateSelfLibraryAppletCreatorForDevelop, GetDebugFunctions

All functions are appropriately implemented. Functions without descriptions return stub implementations. Includes all 20.0.0+ functions from switchbrew documentation.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-01 17:54:07 +10:00
Zephyron
e2e35d1af6 Merge branch 'tma-add-new-functions-services' into 'master'
core/hle: Implement TMA (Target Manager Agent) service

See merge request citron/rewrite!28
2025-07-01 06:27:59 +00:00
Zephyron
04b0624930 core/hle: Implement TMA (Target Manager Agent) service
Add implementation for the TMA service which provides file I/O
and debugging functionality for development tools.

Changes:
- Add TMA service with IFileManager, IFileAccessor, and IDirectoryAccessor
- Implement stubbed file operations (ReadFile, WriteFile, GetFileSize, etc.)
- Implement stubbed directory operations (ReadDirectory, GetEntryCount, etc.)
- Add TMA logging category for service debugging
- Fix parameter alignment in ReadFile function signature

All functions are provided as-is to allow games and development tools to initialize
without errors.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-01 16:25:30 +10:00
Zephyron
312de1beca Merge branch 'fsp-add-new-functions-services' into 'master'
fs: Implement missing filesystem functions and interfaces

See merge request citron/rewrite!27
2025-06-30 09:26:35 +00:00
Zephyron
90f265837d fs: Implement missing filesystem functions and interfaces
- Add IDeviceOperator interface with 49 functions for SD card, MMC, and game card operations
- Add IEventNotifier interface for filesystem event notifications
- Add ISaveDataTransferManager and related transfer interfaces (exporter/importer)
- Add IWiper interface for BIS partition wiping
- Enhance FSP_SRV with OpenDeviceOperator, OpenSdCardDetectionEventNotifier, OpenSaveDataTransferManager, and other missing functions
- Enhance FSP_LDR with OpenCodeFileSystem, IsArchivedProgram, and SetCurrentProcess implementations
- Enhance FSP_PR with RegisterProgram, UnregisterProgram, and verification functions
- Fix ServiceContext usage for proper event creation and management
- Fix function parameter alignment issues for CMIF serialization
- Update build system to include new source files
- Update copyright headers to 2025 citron

All functions are implemented with appropriate logging and parameter validation based on Nintendo Switch filesystem services documentation.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-30 19:24:23 +10:00
Zephyron
7f5661440a Merge branch 'sockets-add-new-functions-services' into 'master'
core/sockets: Add missing socket services and functions from switchbrew

See merge request citron/rewrite!26
2025-06-30 08:02:01 +00:00
Zephyron
90dc2df21a core/sockets: Add missing socket services and functions from switchbrew
- Add Unknown39 and Unknown40 functions to BSD service for [20.0.0+]
- Implement bsd:nu service with ISfUserService and ISfAssignedNetworkInterfaceService
- Add dns:priv and ethc:c/ethc:i service stubs
- Update CMakeLists.txt to include new socket service files
- All new functions include basic stub implementations following existing patterns

This completes the socket services implementation based on switchbrew.org documentation.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-29 16:57:26 +10:00
Zephyron
ed6d170c3b Merge branch 'hid-add-new-functions-services' into 'master'
hid: Implement missing HID service functions and stubs

See merge request citron/rewrite!25
2025-06-29 05:57:14 +00:00
Zephyron
04dfb8914f hid: Complete HID service implementation with all switchbrew functions
- Add all missing function declarations and implementations for HID server
- Implement functions from 15.0.0+ through 20.0.1+ firmware versions
- Add proper command buffer IDs matching switchbrew documentation:
  * 1010: SetForceSixAxisSensorFusedParameters [15.0.0+]
  * 1011: GetForceSixAxisSensorFusedParameters [15.0.0+]
  * 1012: GetFirmwareVersionStringForUserSupportPage [20.0.0+]
  * 1420: GetAppletResourceProperty [19.0.0+]
  * 533: SetPalmaDisallowedActiveApplications [20.0.0+]
  * 410: GetNpadOfHighestBatteryLevelForJoyLeft
- Add comprehensive Unknown function stubs for gaps in documentation
- Update HID debug server with missing functions and fix duplicate entries
- Organize functions by firmware version with proper comments
- Update firmware version string to realistic Atmosphere 1.9.1 + NX 20.1.5
- Fix GetResourceManager to use Initialize() instead of UpdateControllers()
- Ensure all functions have proper stub implementations with logging

This brings Citron's HID service implementation to full parity with the
official Nintendo Switch HID service as documented on switchbrew.org.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-29 15:55:54 +10:00
Zephyron
407c656f69 hid: Implement missing HID service functions and stubs
Add implementations for previously unimplemented HID functions:

* Accelerometer parameter functions (73-78):
  - SetAccelerometerParameters, GetAccelerometerParameters, ResetAccelerometerParameters
  - SetAccelerometerPlayMode, GetAccelerometerPlayMode, ResetAccelerometerPlayMode

* Six-axis sensor calibration (86):
  - StoreSixAxisSensorCalibrationParameter

* Seven six-axis sensor fusion strength (308-309):
  - SetSevenSixAxisSensorFusionStrength, GetSevenSixAxisSensorFusionStrength

* USB Full Key Controller and battery functions (401-408):
  - EnableUsbFullKeyController, IsUsbFullKeyControllerConnected
  - HasBattery, HasLeftRightBattery
  - GetNpadInterfaceType, GetNpadLeftRightInterfaceType
  - GetNpadOfHighestBatteryLevel, GetNpadOfHighestBatteryLevelForJoyRight

* Digitizer activation (2000):
  - ActivateDigitizer

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-28 20:33:39 +10:00
Zephyron
cdcda1fa5b feat(core): Update HOS and NintendoSDK version constants
- Bumps HOS version from 20.1.1 to 20.1.5
- Updates the corresponding `VERSION_HASH`, `DISPLAY_VERSION`, and
  `DISPLAY_TITLE` strings.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-28 19:55:42 +10:00
Zephyron
9e49ff3897 Revert "audio_core: Improve audio renderer compatibility and error handling"
This reverts commit c8aeab799d.
2025-06-23 19:15:09 +10:00
Zephyron
39ed0afa1f Revert "Implement IApplicationFunctions function 210 (RequestToAcquireUserUsedMemory)"
This reverts commit 1471d150d0.
2025-06-23 19:14:23 +10:00
Zephyron
1471d150d0 Implement IApplicationFunctions function 210 (RequestToAcquireUserUsedMemory) 2025-06-20 15:52:14 +10:00
Zephyron
66a3980a43 hid: Implement ActivateDebugMouse function
Adds implementation for the missing ActivateDebugMouse HID service function
that was causing crashes when games attempted to call it.

- Add ActivateDebugMouse declaration to IHidServer header
- Implement ActivateDebugMouse function following the same pattern as ActivateMouse
- Update function table to call the actual implementation instead of nullptr
- Add missing include for debug_mouse.h

Fixes crashes in games (GEX Trilogy) that use debug mouse functionality.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-18 19:41:43 +10:00
Zephyron
c8aeab799d audio_core: Improve audio renderer compatibility and error handling
- Change mix size mismatch from error to warning with recovery
- Adjust input pointer when consumed size doesn't match header size
  to prevent desync and allow processing to continue
- Expand VoiceInfo::InParameter struct by 24 bytes (0x170 -> 0x188)
  to support newer audio renderer versions
- Update static_assert to reflect new structure size

This improves compatibility with games that use newer audio renderer versions or have slight structural differences.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-16 17:24:58 +10:00
Zephyron
4aee8c6709 video_core: Suppress MSVC warnings for VulkanMemoryAllocator
- Add citron copyright header
- Disable compiler warnings for vulkan_common/vma.cpp on MSVC builds
  to prevent third-party VMA library warnings from cluttering build output

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-16 17:22:29 +10:00
Zephyron
08a5d2b4d4 Merge branch 'settings-ui-redesign' into 'master'
ui: Redesign settings dialog with modern layout and improved UX

See merge request citron/rewrite!24
2025-06-16 06:26:27 +00:00
Zephyron
190e7ecfb7 feat: Add Build ID display to per-game configuration dialog
- Extract and display Base Build ID and Update Build ID for Nintendo Switch games
- Support multiple file formats: NSO, Deconstructed ROM, XCI, NSP, and NCA
- Read build IDs directly from NSO headers at offset 0x40 (32 bytes)
- Handle complex file structures with proper fallback mechanisms
- Add dedicated UI fields for both base and update build IDs
- Improve cheat compatibility by showing build IDs needed for cheat files

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-16 16:17:50 +10:00
Zephyron
1abbc3d475 fix: prevent crash when detecting newer updates in NCA integrity verification
- Change storage assignment from SetDataStorage() method to direct array indexing to prevent crashes when newer game updates are detected.
- The previous method was incorrectly handling storage info assignment for integrity verification layers.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-11 18:47:25 +10:00
Zephyron
bc39ce4e74 ui: Redesign settings dialog with modern layout and improved UX
- Reorganize tabs in logical order (General first, UI, System, etc.)
- Implement single-row dynamic tab layout for cleaner appearance
- Shorten tab labels for better fit ("UI", "Graphics (Adv)")
- Fix Graphics tab layout with proper scrolling and spacing
- Remove redundant reset settings checkbox (use General tab instead)
- Apply modern dark theme styling with improved colors and spacing
- Enhance tab button sizing and responsiveness
- Update copyright headers for 2025

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-04 17:08:25 +10:00
Zephyron
e8918426fa Merge branch 'aoc-add-new-functions-services' into 'master'
feat(service/aoc): Implement IContentsServiceManager

See merge request citron/rewrite!23
2025-06-03 12:20:35 +00:00
Zephyron
4bd4e662d2 feat(service/aoc): Implement IContentsServiceManager
- Add IContentsServiceManager class with RequestContentsAuthorizationToken function
- Add IAsyncData class for handling asynchronous authorization token operations
- Implement CreateContentsServiceManager in IAddOnContentManager (was previously stubbed)
- Add support for GetSize, Read, Cancel, and GetSystemEvent operations in IAsyncData
- Update CMakeLists.txt to include new source files

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-03 22:19:44 +10:00
Zephyron
1febbc4911 feat(core): Update HOS and NintendoSDK version constants
- Bumps HOS version from 20.0.1 to 20.1.1.
- Updates the corresponding `VERSION_HASH`, `DISPLAY_VERSION`, and
  `DISPLAY_TITLE` strings.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-03 21:48:46 +10:00
Zephyron
050f876ace Merge branch 'openal-audio-implementation' into 'master'
audio_core: Add OpenAL audio backend support

See merge request citron/rewrite!22
2025-06-01 05:27:58 +00:00
Zephyron
abf5f6730b audio_core: Add OpenAL audio backend support
- Add complete OpenAL sink implementation with robust error handling
- Support for device enumeration using ALC extensions
- Implement dummy streams for graceful degradation when OpenAL fails
- Add proper audio threading and buffer management
- Include comprehensive logging and diagnostic information
- Add stream limits and retry mechanisms for stability

Additional changes:
- Add ENABLE_OPENAL CMake option and OpenAL dependency management
- Include openal-soft in vcpkg dependencies
- Add OpenAL to audio engine settings enum

The OpenAL backend provides an alternative audio solution alongside
existing Cubeb and SDL2 backends, with enhanced device compatibility
and improved error recovery mechanisms.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-06-01 15:26:55 +10:00
Zephyron
1238d37f27 Merge branch 'android-advanced-emulation-settings' into 'master'
cmake(android): Optimize Vulkan Validation Layer handling

See merge request citron/rewrite!21
2025-05-30 07:38:33 +00:00
Zephyron
d9192952bb Merge branch 'grid-view-implementation' into 'master'
feat: Add grid view with round icons for game list

See merge request citron/rewrite!20
2025-05-30 07:23:51 +00:00
Zephyron
55867a6972 style: Use rounded corners instead of circular icons in grid view
- Replace circular clipping with subtle rounded corners (radius = size/8) for a more modern and polished appearance.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-30 17:04:17 +10:00
Zephyron
8671e067ae feat: Add grid view with round icons for game list
- Implement toggle between list and grid view modes (Ctrl+G)
- Add round icon rendering with anti-aliased circular clipping
- Display game titles below icons in grid layout
- Create flat model for grid view showing only games
- Add View menu option and Ctrl+G hotkey for toggling
- Implement separate filtering logic for both view modes
- Update grid layout with proper spacing and text alignment
- Maintain existing tree view functionality and features
- Support double-click to launch and right-click context menus in both modes

The grid view provides a more visual game browsing experience while
preserving all existing functionality of the original list view.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-30 16:45:02 +10:00
Zephyron
837af6ccb9 feat: Add compact overlay system with FPS, thermal, and RAM indicators
- Replace old text-based FPS/thermal overlays with custom views
- Add new FpsIndicatorView with color-coded performance display
- Add ThermalIndicatorView showing battery temperature in °C/°F
- Add RamMeterView with usage percentage and visual progress bar
- Arrange all overlays horizontally at top center of screen
- Add native configuration support for show_ram_meter setting
- Update overlay options menu to include RAM meter toggle
- Implement proper battery temperature reading via BatteryManager
- Use compact 120x60 (FPS/thermal) and 140x60 (RAM) dimensions
- Add color coding: green (good), orange (moderate), red (poor/hot)
- Include appropriate icons and shadows for better visibility (WIP)

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-25 21:22:29 +10:00
Zephyron
693eb0e863 android: Port advanced emulation settings to Zep Zone
- Add memory layout configuration (4GB-16GB DRAM options)
- Implement ASTC texture handling controls
- Add shader backend selection (GLSL/GLASM/SPIR-V)
- Include VRAM usage mode settings
- Create organized UI with headers and detailed descriptions
- Based On Uzuy Commit 8f49bef05c 14/09/2024

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-25 19:44:29 +10:00
Zephyron
f15e592810 android: Major build configuration update
- Upgrade to Android 35 (API 35) with NDK 27.2.12479018
- Enable release build optimizations (resource shrinking, proguard-optimize)
- Drop x86_64 support, ARM64-only builds
- Update CMake to 3.31.7 with flexible page sizes support
- Clean up unused dependencies

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-25 19:37:05 +10:00