Changelog:

Core

====

* mmap executable memory

* Zero top bits in INSERTQ/EXTRQ

* Fix read-only file unmaps on Windows

* Standardize RegisterLib names for HLE libraries

* Filesystem: Fix create flag handling in open

* If CONTENT_ID is empty in param.sfo, try using TITLE_ID as fallback

* Add an unreachable on hitting ud2 instead of getting stuck in an infinite loop

* Microphone support

* Only update configs when using a different build

* Core: Return error if DirectMemoryQuery address is too high

* Simple IPC for external control

* Filesystem: Fix error behavior for close calls on std handles

* Sockets fixes

* Add entries for . and .. in MntPoints::IterateDirectory

* Log user CPU, total RAM, and OS

* Filesystem: Directory-related fixes

* Memory: Align size and address in posix_munmap

* Filesystem: Abstract handling of directory files

* Replace direct usage of wrgsbase and rdgsbase with a more portable solution

* config: Add present mode option.

* Game specific configs

* Improve memory address validation logic

* Remove checks for symbol version_major and version_minor

* Fix MXCSR and FPUCW registers on created threads

* Log error on MapMemory out of flexible memory case

* Open a dummy audio input device if none is present in the system

* Ds4 Speaker Audio

Libs

====

* libkernel: Add missing mprotect export

* IME fixes

* video_out: Internal Resolution Support

* Implement sceKernelGetSystemSwVersion

* Implement sceAudio3dTerminate

* Implement sceAudioOutGetLastOutputTime

* Register posix_rename

* Implement sceKernelError

* Using custom usb lib

* inet_ntop and inet_pton

* Extract netmask and default gateway from host system

* Implement simple DNS name resolution

* Return the number of samples enqueued in AudioOut

* Return an error before a pad is opened

* scePadResetOrientation

* Fix sceAudioOutOutputs

* Fixed RetrieveNetmask for windows

* Net: Fix various socket-related issues

* sys_getpeername

* Implement ORBIS_NET_CTL_INFO_HTTP_PROXY_CONFIG

* Fix get/setsockopt levels

* libkernel: more network functions for OpenOrbis compatibility

* libSceAppContent: Use last 16 characters of DLC folder to determine entitlement label

* Make libSceRtc fully HLE

* Fixed green artifacts in movies/animations (ffmpeg)

* Select support

* libSceAppContent: Determine entitlement labels from additional content param.sfo

* Fix sceVoiceGetPortInfo

* Fix handling of RFC 3339 formatted dates

* libSceNpParty: Stub out functions with not-in-party behavior

* Add stubbed libSceNpProfileDialog library

* Better libSceMove stubs

* Better libSceCamera stubs

* Implement ORBIS_NET_SO_ERROR_EX in GetSocketOptions

* Improved libSceHmd stubs

* libSceHmdSetupDialog stubs

* libSceVrTracker stubs

* semaphore: Invert priority order

* semaphore: Fix determining wait status when canceled/deleted

* Implement send/recvmsg

* libkernel: Return EINVAL if mmap is called with length = 0

* SaveData fixes

* Handle null event flags in cancel and clear

* AF_UNIX preliminary support

* Np libraries cleanup

* Implement sceKernelIsInSandbox, update OrbisSysModule Enum

* equeue: Few fixes for sceKernelWaitEqueue

* Implement getargc and getargv

* Simple implementation of sceGnmUnmapComputeQueue

* kernel: Improvements to condvars.

* kernel: More thread code clean-up.

Shader recompiler

=================

* Fix V_ADDC_U32 carry-out edge cases

* Reorganize data share operations and implement GDS

* ir_passes: Fold readlane with ff1 pattern

* Implement ff1 with subgroup ops

* Replace buffer pulling with attribute divisor for instance step rate

* Implement guest barycentrics

* Fix ff1_i32_b64 not accepting vcc as its argument

* attribute: Correct bary coord function

* Avoid clearing HTILE when shader contains address calculation

* Implement MUBUF instructions for shorts/bytes

* control_flow_graph: Treat empty conditional branch as noop

* Fix incorrect bary coord loads when unsupported

* Use VM bit for conditional discard

* translate: Correct instance id fetch in local shader

* V_ALIGNBYTE_B32 and V_ALIGNBIT_B32

* Rework sharp tracking for robustness

* Improve heuristic for attributes passed via ring buffers

* ir: Perform degamma in shader when sampler sets force_degamma

* Implement V_CMP_GT_U6

* Improve shader exports accuracy (part 1)

* Do not emit Layer when emulating primitive type with tessellation.

* vector_interpolation: Address some assertions

* Support multiple attributes using the same load in vertex fetch shaders

* Handle S_LSHL_B32 in ParseCopyShader

* Initialize all ClipDistance and CullDistance values

* Handle ExecLo source in S_FF1_I32_B64

* Apply float type for float buffer atomics

* constant_propagation_pass: Handle a few more bitwise instructions.

* Implement V_ADD_F64 and loading 64-bit float from SGPR.

* Handle offsets and format overrides in fetch shaders

* Relax dual source blending assert to allow up to two targets.

* Allow vector and scalar offset in buffer address arg to LoadBuffer/StoreBuffer

* Support PointSize and ViewportIndex attributes.

* image: Do not set storage usage for block-encoded formats

GPU

===

* texture_cache: Change depth resolve new image back to max of resources

* texture_cache: Async download of GPU modified linear images

* buffer_cache: Bring back upload batching and temporary buffer

* vk_rasterizer: Set render area to window scissor when no framebuffers are bound

* renderer_vulkan: Handle more miscellaneous GPU setting

* vk_instance: Remove usage of depth clamp control

* liverpool_to_vk: Don’t use remapped format for clear value

* vk_pipeline_cache: Add fallbacks for R8Srgb and B5G6R5

* texture_cache: Clamp buffer image height to microtile height

* vk_rasterizer: Improve stencil clears

* texture_cache: Do not modify mip height for copy in volume texture.

* video_core: garbage collector (part 1)

* video_core: Rework tile manager

* texture_cache: Only queue image downloads if the image address is greater than zero.

* video_core: Fix some struct comparisons.

* vk_pipeline_cache: Cleanup graphics key refresh

* renderer_vulkan: Restore color write dynamic state

* vk_graphics_pipeline: Prioritize depth clip when separate clip/clamp control is not supported.

* vk_pipeline_cache: Add storage images to descriptor heaps

* vk_scheduler: Properly initialize vulkan structures in RenderState.

* renderer_vulkan: Ignore blend parameters when disabled.

* vk_rasterizer: Set image flag bits in resolve

* liverpool: Write valid queries on PixelPipeStatDump

* amdgpu: Report GPU perf counter in GPU cycles.

* vk_rasterizer: Only assert on primitive restart if performing indexed draw

* video_core: Upload buffer memory around unmapped pages

* video_core: Address various UE bugs

* video_core: Check DB_SHADER_CONTROL register before performing depth exports

* texture_cache: Make sure that readback images are downloaded in time

QT interface

============

* Extend Qt detection to support multiple drives

* Fix gui emulatorLanguage

* Volume slider that adjusts how loud games are on a global level

* Disable autoupdate on branches that aren’t the official main

* Add default trophy sound

* Add toggle in the settings window for readbacks

* Apply cheat/patch only if AppVer matches game version

* Multiple controllers: Select active controller and set default controller

* Added customizable controller hotkeys

* Remapping Guis – more minor fixes

* Fix Play Time – Wasn’t saving every minute

* Keybard/pad config common preset name is translated to target language

* Qt: update to 6.9.2 and remove Mac workaround

* Qt: enforce set order for kbm string mapping to prevent duplicate combo mappings

* Move QT plugins to the qtplugins folder on Windows QT builds

* Toggle to enable/disable logging

* Qt: prevent saving/canceling for remapping/hotkeys dialogs while waiting for inputs

* Add an option to change DLC path from the settings

* Use icons, music and background images of updates if available

* Qt: Add FSR options to settings GUI

* Increase the size of the description text box

* Log presets feature

* QT: TrophyViewer size adjustment and ‘Log’ tab translated

* QΤ: Add GUI for game-specific settings

* QT: Add the Log tab to ‘Default tab when opening settings’

* Qt: Add descriptions for new experimental settings in GUI

* QT: Fix Patches ‘Incompatibility Notice’

* Qt: Group game-specific and non-game-specific items in the same tabs

* QT: Note Vulkan SDK requirement for validation tooltips

Atualizações v0.11.0:

Núcleo (Core)

Memória executável com mmap

Zerar bits superiores em INSERTQ/EXTRQ

Corrigido o problema de unmap em arquivos somente leitura no Windows

Padronização dos nomes RegisterLib para bibliotecas HLE

Sistema de arquivos: corrigido o tratamento de flags de criação ao abrir arquivos

Se CONTENT_ID estiver vazio no param.sfo, usar TITLE_ID como alternativa

Adicionada instrução “unreachable” ao atingir ud2, evitando travamento em loop infinito

Suporte a microfone

Atualizar configurações apenas ao usar uma compilação diferente

Retornar erro se o endereço DirectMemoryQuery for muito alto

Implementado IPC simples (comunicação entre processos) para controle externo

Corrigido comportamento de erro ao fechar handles padrão

Correções em sockets

Adicionados os diretórios . e .. em MntPoints::IterateDirectory

Registro de informações de CPU, RAM total e sistema operacional do usuário

Sistema de arquivos: várias correções relacionadas a diretórios

Memória: alinhamento de tamanho e endereço em posix_munmap

Sistema de arquivos: abstração no tratamento de arquivos de diretórios

Substituído uso direto de wrgsbase e rdgsbase por solução mais portátil

Adicionada opção de modo de apresentação (present mode) nas configurações

Suporte a configurações específicas por jogo

Melhor validação de endereços de memória

Removidas verificações de versão de símbolos (version_major, version_minor)

Corrigidos registradores MXCSR e FPUCW em threads criadas

Log de erro em MapMemory fora do caso de memória flexível

Criação de dispositivo de áudio de entrada fictício (dummy) se não houver nenhum no sistema

Suporte a áudio no alto-falante do controle DualShock 4

Bibliotecas (Libs)

libkernel: adicionada exportação ausente de mprotect

Correções no IME (método de entrada de texto)

video_out: suporte à resolução interna

Implementado sceKernelGetSystemSwVersion

Implementado sceAudio3dTerminate

Implementado sceAudioOutGetLastOutputTime

Registrado posix_rename

Implementado sceKernelError

Uso de biblioteca USB personalizada

Adicionados inet_ntop e inet_pton

Extração de máscara de rede e gateway padrão do sistema host

Implementação de resolução simples de nomes DNS

Retornar número de amostras enfileiradas em AudioOut

Retornar erro antes de abrir um controle (pad)

Implementado scePadResetOrientation

Corrigido sceAudioOutOutputs

Corrigido RetrieveNetmask no Windows

Rede: várias correções relacionadas a sockets

Implementado sys_getpeername

Implementado ORBIS_NET_CTL_INFO_HTTP_PROXY_CONFIG

Corrigidos níveis de get/setsockopt

libkernel: mais funções de rede para compatibilidade com OpenOrbis

libSceAppContent: uso dos últimos 16 caracteres da pasta DLC para determinar rótulo de direito (entitlement)

libSceRtc: agora totalmente HLE

Corrigidos artefatos verdes em vídeos/animações (FFmpeg)

Suporte a select

libSceAppContent: determina rótulos de direitos a partir de conteúdo adicional (param.sfo)

Corrigido sceVoiceGetPortInfo

Tratamento de datas no formato RFC 3339

libSceNpParty: funções simuladas para comportamento “não em grupo”

Biblioteca simulada libSceNpProfileDialog

Stubs aprimorados para libSceMove, libSceCamera, libSceHmd, libSceHmdSetupDialog, libSceVrTracker

semaphore: invertida a ordem de prioridade

semaphore: corrigida verificação de status ao cancelar/excluir

Implementado sendmsg e recvmsg

libkernel: retornar EINVAL se mmap for chamado com length = 0

Correções em SaveData

Tratamento de eventos nulos em cancelamento/limpeza

Suporte preliminar a AF_UNIX

Limpeza nas bibliotecas Np

Implementado sceKernelIsInSandbox e atualização de OrbisSysModule Enum

Correções em equeue e sceKernelWaitEqueue

Implementado getargc e getargv

Implementação simples de sceGnmUnmapComputeQueue

Melhorias em variáveis de condição (condvars) e código de threads

Recompilador de Shaders

Corrigidos casos de borda em V_ADDC_U32

Reorganização de operações de compartilhamento de dados e implementação de GDS

Otimizações no IR (intermediate representation)

Implementação de ff1 com operações de subgrupo

Melhorias no carregamento de atributos, coordenadas e exportações

Implementação de novas instruções (V_ADD_F64, V_ALIGNBYTE_B32, V_ALIGNBIT_B32, etc.)

Correções em interpolação, tipos de dados e exportações de shader

Suporte a novos atributos (PointSize, ViewportIndex)

Implementações mais precisas em blending e atomic operations

Melhor precisão nas exportações de shader (parte 1)

GPU

Cache de texturas: várias melhorias e correções (resolução, downloads assíncronos, altura de microtile, etc.)

Cache de buffers: reintrodução de upload batching

Melhorias no rasterizador Vulkan (área de renderização, stencil, blend parameters)

Reestruturação do gerenciador de tiles e introdução de garbage collector

Correções em pipelines, estados de renderização e controle de profundidade

Exibição de contadores de desempenho da GPU

Ajustes no upload de memória e verificação de exportação de profundidade

Melhor estabilidade e compatibilidade geral da GPU

Interface Qt

Detecção do Qt aprimorada (suporte a múltiplos discos)

Correção de idioma da interface do emulador

Controle global de volume adicionado

Desativado auto-update em ramificações não oficiais

Som padrão de troféu adicionado

Alternar leitura de readbacks nas configurações

Aplicar cheats/patches apenas se AppVer coincidir com a versão do jogo

Suporte a múltiplos controles: selecionar e definir o padrão

Correções em remapeamento de controles e teclas de atalho

Correção no salvamento do tempo de jogo

Tradução de nomes predefinidos para teclado/controle

Atualização para Qt 6.9.2 e remoção de workaround do macOS

Organização de plugins Qt na pasta correta

Alternativa para ativar/desativar logs

Prevenção de salvamento/cancelamento enquanto o sistema espera entrada

Opção para alterar o caminho de DLCs nas configurações

Uso de ícones, músicas e planos de fundo de atualizações, se disponíveis

Opções de FSR adicionadas à GUI

Caixa de descrição ampliada

Recurso de presets de logs

Ajustes visuais no Trophy Viewer e novas traduções

GUI para configurações específicas por jogo

Nova aba “Log” configurável como padrão ao abrir configurações

Descrições adicionadas para configurações experimentais

Avisos de incompatibilidade de patches corrigidos

Itens específicos e não específicos de jogos agrupados nas mesmas abas

Observação sobre a necessidade do Vulkan SDK para as ferramentas de validação