v1.8.7
Versión de dos vertientes. Gráficos/shaders: editor de shaders en vivo dentro del juego con confirmación de cambios sin guardar, el reflejo del bezel ahora se difumina en el resultado de scanlines/phosphor para las pantallas Famicom y RF, agrupación de presets Slang con IDs estables SHA-256, flag cacheado de pase final para escalado, overscan por defecto que mantiene el frame completo visible en la conversión RGBA y un pase de rendimiento de renderizado. Biblioteca y Modo TV: modos de visualización de carátulas con caché de fondo difuminado, un nuevo GenreGroupingDiagram con conteos por género, un refresco del aspecto del menú contextual en tarjetas y filas, copys más claras en los ajustes del Modo TV en los tres idiomas, y dimensiones ajustadas del tile y del layout del Modo TV. Además: traducción completa de la UI al japonés.
Destacados
- Localización al japonés: Aterriza una traducción completa de la UI al japonés como
ja.json, conectada al selector de idioma enGeneralSettingsViewy al build de Xcode. La app ahora incluye inglés, español, portugués y japonés. - Editor de shaders en vivo: Desde la ventana del juego, abre una barra lateral para editar en vivo los parámetros del shader. Los cambios sin guardar se protegen con un overlay de confirmación, y los cambios persisten en el preset con el estado SwiftUI refrescándose automáticamente.
- Desenfoque del reflejo del bezel: Los reflejos del bezel mezclan
el bezel reflejado con el resultado de scanlines/phosphorde FamicomRF y RfDisplay para un efecto CRT-sobre-pantalla-plana más realista. Nuevos parámetros de uniform controlan el redondeo, el brillo y el desenfoque del reflejo del bezel; el manejo de la máscara es más estable en la pantalla RF. - Gestión de presets Slang e IDs estables: Los presets se agrupan al mostrarlos, y las colisiones de nombre se desambiguan con un ID estable derivado de SHA-256. Los errores de detección se manejan y registran, y un flag cacheado
_finalPassIsAbsolutedecide el escalado de aspect ratio/viewport sin entrar en el contexto@MainActor. - Manejo de overscan y aspect ratio: La ruta de conversión RGBA ajusta el overscan a cero por defecto para que la imagen fuente completa siga visible, y
MetalCoordinatorcachea el reconocimiento de sistema para un manejo coherente de aspect ratio;XPCBridgeAdaptercachea el aspect ratio para reducir las llamadas síncronas XPC. - Pase de rendimiento de renderizado: Una caché de uniforms por generación en el decodificador RF evita copias de diccionario innecesarias durante el juego;
CRTFilter.metalalinea la máscara de phosphor/scanlines con los píxeles fuente sin importar el upscale de salida; el resampleo de audio enStreamRecordingServiceusaUnsafeBufferPointer;GameTimeBarOverlaysolo conecta sus temporizadores cuando el overlay es visible; el alpha del drawable se reinicia tras el render de Slang para evitar artefactos de transparencia. - Modos de visualización de carátulas: Nueva opción de modo de visualización más integración en
GameCardView,GridCollectionViewyLibraryGridView, respaldada por una caché de imágenes de fondo difuminadas enImageCachepara que las tarjetas rendericen un fondo teñido y suave derivado de su propia carátula. - Diagrama de agrupación de géneros y conteos por género: El nuevo
GenreGroupingDiagramvisualiza los ajustes de géneros;GenreManagerexpone conteos yGenrePickerViewlos muestra. Nuevos labels y descripciones en en/es/pt. - Pulido de menú contextual en tarjetas y filas:
GameCardViewyGameListRowViewreciben un aspecto y una estructura renovados del menú contextual. - Copy y layout del Modo TV: Las descripciones de ajustes del Modo TV se reescriben para más claridad y consistencia en en/es/pt, y se ajustan las dimensiones del game tile y del layout del Modo TV.
- Limpieza del shader 8-bit GameBoy: Se renombran las variables de uniform en
8bGameBoy.metalpor consistencia y claridad, con actualizaciones parejas enShaderPreset,MetalCoordinatoryShaderUniforms. - Log de prefetch de badges de RA: Se elimina el log de debug para badges existentes durante el pase de prefetch.
Cambios detallados
- feat(shader): implementar editor de shaders en vivo con confirmación de cambios sin guardar —
StandaloneGameWindowControlleraloja la barra lateral; los parámetros se aplican al instante; un overlay de confirmación protege los cambios sin guardar; el manejo de presets se refactoriza para apply/persist sin costuras; traducciones en/es/pt de claves de shader añadidas - feat: implementar desenfoque del reflejo del bezel para efectos visuales mejorados y optimizar el manejo de presencia enriquecida
- feat: mejorar el manejo del reflejo del bezel en
applyMaskAndBezelpara fidelidad visual mejorada - feat: mejorar el manejo de la máscara del bezel para fidelidad visual y estabilidad mejoradas en la pantalla RF
- feat: añadir soporte para el reflejo del bezel en
RfDisplayyShaderUniforms— nuevos parámetros de uniform: redondeo, brillo y desenfoque del reflejo del bezel - Mejorar Slang Compiler y Metal Coordinator para mejor renderizado — flag cacheado
_finalPassIsAbsolutesin@MainActor; estrategias de escalado de aspect ratio/viewport según el tipo de pase final del preset; estado de pase final registrado al activar; arreglo del alpha del drawable para evitar transparencias tras render de Slang;SlangPresetDiscoveryServicemaneja errores y desambigua nombres vía IDs estables SHA-256 - Mejorar shaders y rendimiento de renderizado — caché de uniforms por generación para la ruta del decodificador RF en
EmulatorRunner;CRTFilter.metalalinea la máscara de phosphor/scanlines con los píxeles fuente independientemente del upscale;FamicomRF.metal/RfDisplay.metalincorporan el desenfoque del reflejo del bezel; aspect ratio cacheado enXPCBridgeAdapter;StreamRecordingServiceremuestrea audio conUnsafeBufferPointer;GameTimeBarOverlaygestiona las conexiones de temporizador según la visibilidad del overlay;MetalCoordinatorcachea el reconocimiento de sistema para decisiones de aspect ratio - feat: mejorar la gestión de presets Slang con agrupación y mejor manejo de visualización
- feat: ajustar el overscan a cero para una salida visual mejorada en la conversión RGBA
- feat: añadir opciones de modo de visualización de carátulas e integrarlas en las vistas de biblioteca — nuevas opciones de modo en
SystemInfo;GameCardView,GridCollectionView,LibraryGridViewactualizados; claves en/es/pt añadidas - feat: implementar caché de imágenes difuminadas para el modo de visualización de carátulas —
ImageCacheañade una caché de fondos difuminados;GameCardViewla usa para fondos teñidos suaves - feat: añadir
GenreGroupingDiagramy mejorar los ajustes de agrupación de géneros con nuevos labels y descripciones — nueva vista de 315 líneas, integrada enGenreSettingsViewySettingsCatalog; labels en/es/pt añadidos - feat: añadir funcionalidad de conteo de géneros a
GenreManagere integrarla conGenrePickerView— conteos por género en el picker y en la vista de cuadrícula - feat: mejorar el aspecto del menú contextual en
GameCardViewyGameListRowView - feat: mejorar las descripciones de ajustes del Modo TV para claridad y consistencia entre idiomas — reescritura de
TVModeMainSettingsView; copy en/es/pt alineado - feat: ajustar dimensiones del game tile y del layout del Modo TV — pase de sizing en
TVModeGameTileyTVModeView - feat: renombrar variables de uniform del shader 8-bit GameBoy por consistencia y claridad —
8bGameBoy.metal,ShaderPreset,MetalCoordinator,ShaderUniformsmantenidos en sincronía - feat: eliminar el log de debug para badges existentes durante el proceso de prefetch —
RABadgeCacheService - feat: añadir traducción completa de la UI al japonés —
ja.json(2468 líneas), conectada al selector de idiomas enGeneralSettingsViewy al build de recursos de Xcode; la app ahora incluye en/es/pt/ja - Refactorizar la estructura del código para mejorar la legibilidad y el mantenimiento
- Subir la versión de marketing a 1.8.7 y el número de build a 30 en
project.yml, los dosInfo.plistydocs/_config.yml