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>
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
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>
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>
- 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>
- Extended MemoryLayout enum with new memory size options
- Added corresponding SMC memory size and arrangement constants
- Updated system control functions to handle new memory configurations
- Added appropriate application pool sizes for higher memory modes
- Updated UI translations to display new DRAM options as "Unsafe"
- Increased maximum memory layout setting from 8GB to 16GB
This allows users to configure higher memory amounts for games and
texture mods that require more than the standard 4-8GB configurations.
All new options are marked as "Unsafe" in the UI to indicate they
are experimental features beyond Nintendo's official specifications.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit introduces support for a 32:9 aspect ratio throughout Citron.
Key changes include:
- **Enum Updates**: Added `R32_9` to `Settings::AspectRatio` and `Layout::AspectRatio` enums, ensuring consistent integer mapping for casting between them.
- **Core Logic**:
- Modified `UISettings::CalculateWidth` to correctly compute width for the 32:9 ratio.
- Updated `Layout::EmulationAspectRatio` to handle the new `R32_9` case and return the appropriate float value (9.0f / 32.0f).
- **Android Integration**:
- Updated `EmulationFragment.kt` and `EmulationActivity.kt` (for Picture-in-Picture) to recognize and apply the 32:9 aspect ratio (mapping setting value `4` to `Rational(32, 9)`).
- **UI Configuration**:
- Added "Force 32:9" to the aspect ratio selection in the graphics settings UI via `shared_translation.cpp`. This string is translatable.
This enhancement allows users to utilize ultra-widescreen 32:9 displays for a more immersive experience.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Disables the `enable_telemetry` setting by default.
- Updates the `web_api_url` to "https://api.ynet-fun.xyz".
- Updates the copyright year and project name.
Signed-off-by: Zephyron <zephyron@citron-emu.org>