Add proper recovery mechanism for null pointer execution (PC < 0x1000)
by returning from invalid function calls using the Link Register instead
of blindly continuing execution.
Fixes infinite crash loop in games like Little Nightmares III.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implements ScaleFX algorithm for pixel art upscaling with edge
preservation. Supports both OpenGL and Vulkan with FP16/FP32
variants for hardware optimization.
ScaleFX is designed to reduce pixelation while preserving sharp
edges, ideal for low-resolution and pixel art games.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Add Res1_4X resolution setup with down_shift=2
- Mark as EXPERIMENTAL in UI labels
- Support on both Qt and Android frontends
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implements two-stage PGO build system with CMake integration and
automated build scripts for Windows, Linux, and macOS. Supports
MSVC, GCC, and Clang compilers.
PGO enables runtime profiling-based optimizations for improved
emulator performance. Includes helper scripts to streamline the
build workflow and resolve platform-specific issues.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Use getMainLooper() instead of myLooper() in Handler initialization
and add view attachment checks to prevent crashes.
Reported-by: Shadai (theonlyshadai) on Discord
Signed-off-by: Zephyron <zephyron@citron-emu.org>
QImage does not have a flipped() method. Replace with the correct mirrored(false, true) call to perform vertical image flipping for
screenshot capture.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Unify fastmem_pointer handling by using reinterpret_cast<uintptr_t>()
and std::nullopt consistently across all platforms, fixing MSVC
compilation errors with std::optional<uintptr_t> assignment.
Fixes: C2679 binary '=' operator errors on MSVC
Signed-off-by: Zephyron <zephyron@citron-emu.org>