v1.8.7
Versão de duas frentes. Gráficos/shaders: editor de shaders ao vivo dentro do jogo com confirmação de mudanças não salvas, o reflexo do bezel agora se difunde no resultado de scanlines/phosphor para as telas Famicom e RF, agrupamento de presets Slang com IDs estáveis SHA-256, flag cacheado de passe final para escalonamento, overscan padrão que mantém o frame completo visível na conversão RGBA e um passe de desempenho de renderização. Biblioteca e Modo TV: modos de exibição de capas com cache de fundo desfocado, um novo GenreGroupingDiagram com contagens por gênero, um aspecto renovado do menu de contexto em cards e linhas, redação mais clara das configurações do Modo TV nos três idiomas, e dimensões ajustadas do tile e do layout do Modo TV. Além disso: tradução completa da UI para o japonês.
Destaques
- Localização para o japonês: Aterra uma tradução completa da UI para o japonês como
ja.json, conectada ao seletor de idioma emGeneralSettingsViewe ao build do Xcode. O app agora inclui inglês, espanhol, português e japonês. - Editor de shaders ao vivo: A partir da janela do jogo, abra uma barra lateral para editar ao vivo os parâmetros do shader. As mudanças não salvas são protegidas com um overlay de confirmação, e as mudanças persistem no preset com o estado SwiftUI sendo atualizado automaticamente.
- Desfoque do reflexo do bezel: Os reflexos do bezel misturam
o bezel refletido com o resultado de scanlines/phosphorde FamicomRF e RfDisplay para um efeito CRT-em-tela-plana mais realista. Novos parâmetros de uniform controlam o arredondamento, o brilho e o desfoque do reflexo do bezel; o tratamento da máscara é mais estável na tela RF. - Gestão de presets Slang e IDs estáveis: Os presets são agrupados na exibição, e colisões de nome são desambiguadas com um ID estável derivado de SHA-256. Erros de descoberta são tratados e registrados, e um flag cacheado
_finalPassIsAbsolutedecide o escalonamento de aspect ratio/viewport sem entrar no contexto@MainActor. - Tratamento de overscan e aspect ratio: O caminho de conversão RGBA define o overscan como zero por padrão para que a imagem fonte completa continue visível, e
MetalCoordinatorcacheia o reconhecimento de sistema para um tratamento coerente de aspect ratio;XPCBridgeAdaptercacheia o aspect ratio para reduzir as chamadas síncronas XPC. - Passe de desempenho de renderização: Uma cache de uniforms por geração no decodificador RF evita cópias de dicionário desnecessárias durante o jogo;
CRTFilter.metalalinha a máscara de phosphor/scanlines com os píxeis fonte independentemente do upscale de saída; o resampling de áudio emStreamRecordingServiceusaUnsafeBufferPointer;GameTimeBarOverlaysó conecta seus temporizadores quando o overlay está visível; o alpha do drawable é reiniciado após render de Slang para evitar artefatos de transparência. - Modos de exibição de capas: Nova opção de modo de exibição mais integração em
GameCardView,GridCollectionVieweLibraryGridView, apoiada por uma cache de imagens de fundo desfocadas emImageCachepara que os cards renderizem um fundo tingido e suave derivado da própria capa. - Diagrama de agrupamento de gêneros e contagens por gênero: O novo
GenreGroupingDiagramvisualiza as configurações de gêneros;GenreManagerexpõe contagens eGenrePickerViewas mostra. Novos labels e descrições em en/es/pt. - Polimento do menu de contexto em cards e linhas:
GameCardVieweGameListRowViewrecebem um aspecto e uma estrutura renovados do menu de contexto. - Redação e layout do Modo TV: As descrições de configurações do Modo TV são reescritas para mais clareza e consistência em en/es/pt, e as dimensões do game tile e do layout do Modo TV são ajustadas.
- Limpeza do shader 8-bit GameBoy: As variáveis de uniform em
8bGameBoy.metalsão renomeadas por consistência e clareza, com atualizações correspondentes emShaderPreset,MetalCoordinatoreShaderUniforms. - Log de prefetch de badges de RA: Removido o log de debug para badges existentes durante o passe de prefetch.
Mudanças detalhadas
- feat(shader): implementar editor de shaders ao vivo com confirmação de mudanças não salvas —
StandaloneGameWindowControllerhospeda a barra lateral; os parâmetros se aplicam instantaneamente; um overlay de confirmação protege as mudanças não salvas; o tratamento de preset é refatorado para aplicar/persistir sem costuras; traduções en/es/pt de chaves de shader adicionadas - feat: implementar desfoque do reflexo do bezel para efeitos visuais aprimorados e otimizar o tratamento de presença enriquecida
- feat: melhorar o tratamento do reflexo do bezel em
applyMaskAndBezelpara fidelidade visual aprimorada - feat: melhorar o tratamento da máscara do bezel para fidelidade visual e estabilidade aprimoradas na tela RF
- feat: adicionar suporte ao reflexo do bezel em
RfDisplayeShaderUniforms— novos parâmetros de uniform: arredondamento, brilho e desfoque do reflexo do bezel - Melhorar Slang Compiler e Metal Coordinator para renderização aprimorada — flag cacheado
_finalPassIsAbsolutesem@MainActor; estratégias de escalonamento de aspect ratio/viewport conforme o tipo de passe final do preset; estado do passe final registrado na ativação; correção do alpha do drawable evita transparência após render de Slang;SlangPresetDiscoveryServicetrata erros e desambigua nomes via IDs estáveis SHA-256 - Melhorar shaders e desempenho de renderização — cache de uniforms por geração para o caminho do decodificador RF em
EmulatorRunner;CRTFilter.metalalinha a máscara de phosphor/scanlines com os píxeis fonte independentemente do upscale;FamicomRF.metal/RfDisplay.metalincorporam o desfoque do reflexo do bezel; aspect ratio cacheado emXPCBridgeAdapter;StreamRecordingServicereamostra áudio comUnsafeBufferPointer;GameTimeBarOverlaygerencia as conexões de temporizadores por visibilidade do overlay;MetalCoordinatorcacheia o reconhecimento de sistema para decisões de aspect ratio - feat: aprimorar a gestão de presets Slang com agrupamento e melhor tratamento de exibição
- feat: ajustar o overscan para zero para uma saída visual aprimorada na conversão RGBA
- feat: adicionar opções de modo de exibição de capas e integrá-las nas views da biblioteca — novas opções de modo em
SystemInfo;GameCardView,GridCollectionView,LibraryGridViewatualizados; chaves en/es/pt adicionadas - feat: implementar cache de imagens desfocadas para o modo de exibição de capas —
ImageCacheadiciona um cache de fundos desfocados;GameCardViewo usa para fundos tingidos suaves - feat: adicionar
GenreGroupingDiagrame aprimorar as configurações de agrupamento de gêneros com novos labels e descrições — nova view de 315 linhas, integrada emGenreSettingsVieweSettingsCatalog; labels en/es/pt adicionados - feat: adicionar funcionalidade de contagem de gêneros a
GenreManagere integrá-la comGenrePickerView— contagens por gênero no picker e na view de grade - feat: melhorar o aspecto do menu de contexto em
GameCardVieweGameListRowView - feat: aprimorar as descrições das configurações do Modo TV para clareza e consistência entre idiomas — reescrita de
TVModeMainSettingsView; redação en/es/pt alinhada - feat: ajustar dimensões do game tile e do layout do Modo TV — passe de sizing em
TVModeGameTileeTVModeView - feat: renomear variáveis de uniform do shader 8-bit GameBoy por consistência e clareza —
8bGameBoy.metal,ShaderPreset,MetalCoordinator,ShaderUniformsmantidos em sincronia - feat: remover o log de debug para badges existentes durante o processo de prefetch —
RABadgeCacheService - Refatorar a estrutura do código para melhorar a legibilidade e a manutenibilidade
- feat: adicionar tradução completa da UI para o japonês —
ja.json(2468 linhas), conectada ao seletor de idioma emGeneralSettingsViewe ao build de recursos do Xcode; o app agora inclui en/es/pt/ja - Subir a versão de marketing para 1.8.7 e o número de build para 30 em
project.yml, nos doisInfo.pliste emdocs/_config.yml