DuckStation
DuckStation est un émulateur PlayStation 1 (PS1) open-source, conçu pour privilégier la jouabilité et les performances sur des machines variées, y compris les appareils à faible puissance. Développé avec une approche axée sur la précision technique tout en évitant les optimisations "hackées", il intègre un frontend complet basé sur Qt et un mode plein écran inspiré de Dear ImGui, offrant une interface moderne et configurable.
Sur macOS, notamment les versions récentes et les modèles Apple Silicon, DuckStation propose un support expérimental via des bibliothèques comme SDL et Qt, mais reste moins optimisé que sur Windows ou Linux. Les fonctionnalités clés incluent un récompilateur CPU/JIT multiplateforme, un rendu matériel (Metal, Vulkan, etc.), des filtres d’upscaling, un système de remplacements de textures, et un support étendu des formats de jeux (CD, ISO, PBP). La prise en charge des save states, du netplay (via un fork dédié) et des contrôles avancés (lightguns, NeGcon) complète son offre, bien que certains bugs ou ralentissements puissent persister. La compilation manuelle via CMake est nécessaire pour macOS.
Dernière mise à jour :
Plateformes
Architecture
Mac OS X - macOS
Apple Silicon
64 bits
Metal
SDL Library
Téléchargement et liens
Historique des versions
v0.1-11826
-
Améliorations spécifiques à macOS (Apple Silicon et optimisations système) :
- Correction du comportement des gestionnaires de page (PageFaultHandler) sur macOS ARM64 (M1/M2/M3) :
- Activation de
SA_NODEFERpour une meilleure gestion des interruptions. - Détermination correcte du flag write via le registre ESR (Exception Status Register).
- Suppression du mutex dans le gestionnaire d’exceptions pour réduire la latence.
- Activation de
- Stabilité accrue : Réservation explicite de la mémoire pour le cache de textures lors de la sauvegarde de l’état (réduction des plantages liés à la mémoire).
- Correction du comportement des gestionnaires de page (PageFaultHandler) sur macOS ARM64 (M1/M2/M3) :
-
Corrections critiques (performance et fiabilité) :
- GPU/TextureCache :
- Correction d’un lecture croisée thread (CPU thread lisant sur le GPU thread), source potentielle de crash ou de corruption graphique.
- Sérialisation fixe des champs
last_vram_writeetnum_splitspour les sauvegardes d’état. - Limitation du nombre d’uploads de textures sauvegardées par état (optimisation mémoire).
- Système :
- Correction du mode de capture initiale au démarrage (évitait les comportements inattendus).
- Amélioration du workflow de rechargement des paramètres (plus fluide, sans perte de données).
- CD-ROM :
- Réduction du délai de pause pendant les pauses (meilleure réactivité pour les jeux utilisant des CD).
- GPU/TextureCache :
-
Interface utilisateur et accessibilité :
- Ajout d’un clavier virtuel à l’écran dans le mode plein écran (FullscreenUI), utile pour les jeux sans périphérique de saisie.
- Correction des icônes manquantes dans les popups d’import de cheats (Qt).
- Amélioration de la sélecteur de sauvegarde (ImGuiOverlays) :
- Animation d’ouverture/fermeture.
- Fermeture automatique lors d’un changement de périphérique.
- Nettoyage de la liste à la fermeture.
-
Corrections mineures mais impactantes :
- Fix des traductions machine dans l’interface Qt (
Changelog complet
v0.1-11752
-
Améliorations majeures de l'émulation :
- Correction des problèmes de synchronisation des accès GPU (Vulkan/D3D12) avec des fixes ciblés sur les pipelines compute, les textures et les barrières de synchronisation (ex. :
VulkanDevice,D3D12Device), améliorant la stabilité et les performances sur les jeux exigeants. - Précision des timers et optimisation de l'émulation via
Timerspour réduire les décalages temporels. - Ajout d’une option pour installer automatiquement les BIOS manquants lors du lancement, simplifiant la configuration initiale.
- Correction des problèmes de synchronisation des accès GPU (Vulkan/D3D12) avec des fixes ciblés sur les pipelines compute, les textures et les barrières de synchronisation (ex. :
-
Corrections critiques de sécurité et de stabilité :
- Prévention des dépassements de buffer dans les chargeurs de médias (CDImagePBP, CDImageMDS, ISOReader, PSFLoader) avec des vérifications de taille et de validité des entrées.
- Correction des fuites mémoire dans
MetalDeviceet optimisation des allocations GPU. - Fix des lectures hors limites dans les callbacks d’achievements et les cheats, ainsi que des troncatures implicites dans les tailles de screenshot et les conversions Shift-JIS/UTF-8.
-
Interface utilisateur et workflow :
- Réorganisation du BIOS Installer dans l’interface Qt avec une page de setup simplifiée et une meilleure gestion des traductions (mise à jour des traductions espagnoles et portugaises).
- Ajout d’un widget collapsible et d’une liste rafraîchissable pour les overlays bordure, ainsi que d’un système de suffixes pour les entrées textuelles en plein écran.
- Correction des crashes lors de l’ouverture des paramètres de jeu et des problèmes de langue dans le setup wizard.
-
Optimisations techniques sous-jacentes :
- Amélioration de la gestion mémoire dans
StateWrapper(évitement des allocations heap, clamps d’enum, zérisation des FIFOQueue) et optimisation des conversions de données (ex. :sjis2utf8). - Mise à jour des dépendances (FFmpeg headers à 9.0) et corrections
- Amélioration de la gestion mémoire dans
Changelog complet
v0.1-11609
-
Améliorations majeures pour les performances et la compatibilité :
- Prise en charge de la lecture des secteurs non-Mode2/bruts sur les images CD, améliorant la compatibilité avec certains jeux.
- Optimisation de la gestion de la mémoire pour les images CD (préchargement) et réduction de la taille de la structure de sauvegarde système pour économiser de la RAM.
-
Corrections critiques :
- Correction d’un bug lié aux pixels transparents dans le mode MMPX Enhanced/Advanced (fixe des artefacts visuels).
- Correction d’un problème de condition inversée dans le système d’achievements, évitant des erreurs lors de l’ajout de nouveaux jeux.
- Correction d’une assertion de débogage dans le mode plein écran en mode mono-thread, ainsi que d’un bug de fermeture prématurée lors de la reprise après suspension.
-
Améliorations du système de capture vidéo :
- Suppression des options AV1/VP9 dans la liste des codecs disponibles pour MediaCapture (simplification et stabilité).
- Amélioration de la robustesse de la configuration Media Foundation (MF) et optimisation de l’encodage matériel via FFmpeg (nécessite désormais FFmpeg ≥ 7.x).
-
Interface utilisateur et expérience utilisateur :
- Ajout d’une option de transition "None" pour les changements d’affichage en plein écran et optimisation du recyclage des textures pour réduire les lag.
- Animation de la barre de progression des achievements lors du déverrouillage.
- Extraction et intégration d’icônes dans l’éditeur de cartes mémoire (interface Qt).
-
Corrections mineures et nettoyage :
- Suppression de scripts Qt inutilisés et d’un fichier inexistant dans le système de build MSBuild.
- Correction d’un bug de bordure en plein écran sous Qt (contournement d’un problème connu).
- Mise à jour de la base de données des manettes SDL pour une meilleure détection des périphériques.
Changelog complet
v0.1-11580
-
Améliorations majeures pour les fonctionnalités utilisateur :
- Ajout d’une vérification d’image dans l’interface en plein écran (sauvegardes, états, etc.), avec un dialogue de progression animé et des transitions corrigées.
- Cheats : Support des labels de branche et des points d’insertion
.orgdans les codes assembleur, avec une meilleure gestion des valeurs binaires (32 bits) et une couverture de tests élargie.
-
Corrections critiques :
- Interface utilisateur (FullscreenUI) : Résolution de problèmes de mise en page (dialogue de progression, sélecteur de sauvegardes, dialogues d’entrée) et suppression de chevauchements dans les modales.
- Base de données de jeux : Correction de l’affichage du révision après vérification et suppression de textes vides inutiles.
- Système de sauvegarde : Empêche la sauvegarde d’un fichier
gamesettings.inivide à la fermeture.
-
Améliorations spécifiques à Qt/interface :
- Setup Wizard : Ajout d’animations, de catégories de paramètres redimensionnées, et suppression de redondances (formats supportés, avertissements inutiles comme l’upscaling sans PGXP).
- Achievements : Centralisation de la construction d’URL de profil et séparation des requêtes de connexion et de progression, avec identification systématique du jeu au démarrage.
-
Corrections mineures mais utiles :
- macOS : Restauration du cadre de focus sur
QLineEditavec le thème natif macOS (résolution partielle du bug #3771). - Multilingue : Correction de chaînes de traduction manquantes (notamment pour le canal de mise à jour par défaut) et suppression de doublons dans les fichiers
.ts.
- macOS : Restauration du cadre de focus sur
(Aucun changement spécifique aux builds .dmg, Apple Silicon, ou version minimale de macOS n’est mentionné.)
Changelog complet
v0.1-11515
-
Nouveautés majeures et fonctionnalités :
- Ajout d’un nou filtre de scanline moderne adaptatif (4x2) pour améliorer la qualité visuelle.
- Améliorations du débogage : ajout de commandes "Patch Instruction" et "Nop Instruction", support du code assembly dans les cheats, et affichage en police fixe pour l’éditeur de codes.
- Gestion des cartes mémoire : configuration avancée des multitaps, sauvegarde des états associée aux cartes, et chargement des préférences pour toutes les cartes.
- Interface utilisateur : transitions fluides (zoom/glissement) en mode plein écran, option pour démarrer directement en mode "Big Picture", et réorganisation des contrôles de vitesse pour plus de clarté.
-
Corrections critiques :
- Crashs et plantages : résolution d’un crash lors de mises à jour de base de données d’achievements en cas de changement de support, et d’un bug où les préférences utilisateur étaient effacées après un reset.
- Stabilité : correction d’une assertion en mode monothread, d’un problème de navigation clavier dans la liste des jeux, et d’un bug de volume en fast-forward (>1x).
- Base de données d’achievements : passage à un stockage SQLite, suppression des redondances et ajout de vérifications de chargement pour éviter les erreurs.
-
Optimisations techniques :
- Performances GPU : suppression de comparaisons redondantes dans le rendu et intégration du mode de dessin dans la structure d’état.
- Gestion des traductions : ajout complet du ukrainien, mises à jour du portugais (Brésil) et de l’espagnol (Espagne), suppression de chaînes de traduction inutiles.
- Corrections mineures mais impactantes : suppression de signaux inutilisés dans l’interface, suppression de texte placeholders, et amélioration de la gestion des fichiers ZIP.
Changelog complet
v0.1-11443
-
Améliorations majeures de performance et de précision :
- Optimisation des branchements CPU via des branch hints (interpréteur et recompiler) pour une exécution plus rapide.
- Suppression de vérifications de limites inutiles dans le GTE (Graphics Texture Engine) et utilisation de tables de lookup pour les opérations
mfc0, réduisant les latences. - Correction d’un problème rare de perte d’événements CDROM lors de la gestion des états de sauvegarde.
-
Corrections critiques :
- Correction d’un bug dans la gestion de la vitesse de lecture des CDROM (
DisableReadSpeed()inefficace) et ajout d’un contrôle manuel de l’état du plateau (lid state). - Fix d’une race condition lors du rafraîchissement simultané de la liste de jeux depuis deux sources.
- Correction des opérandes inversées pour les décalages PGXP dans le recompiler CPU, évitant des comportements incorrects sur certains jeux (ex. Digimon World 2).
- Suppression de la copie systématique des paramètres avancés/ cachés vers les profils de jeux, réduisant les conflits de configuration.
- Correction d’un bug dans la gestion de la vitesse de lecture des CDROM (
-
Interface utilisateur et expérience utilisateur (UI/UX) :
- Ajout d’une recherche dans la liste de jeux en plein écran et amélioration de la saisie textuelle avec icônes (ex. connexion aux badges d’achievements).
- Clarification des messages d’erreur (ex. désynchronisation du numéro de série) et suppression de doublons dans les entrées de base de données de jeux multi-discs.
- Correction des couleurs d’icônes dans les thèmes Classic Windows et native, ainsi que des problèmes d’affichage des textures 3D (round texcoords).
-
Gestion des sauvegardes et système :
- Effacement automatique des sauvegardes mémoire lors d’un redémarrage du système, évitant les conflits.
- Préfetch systématique des badges de jeu avant les badges d’achievements pour fluidifier leur chargement.
Aucune modification spécifique à macOS ou Apple Silicon n’est mentionnée dans ce changelog.
Changelog complet
v0.1-11391
-
Améliorations majeures pour macOS :
- Correction d’un problème d’affichage des icônes dans la barre de menu (ajout de la propriété
isMaskpour les actions d’icônes sur macOS).
- Correction d’un problème d’affichage des icônes dans la barre de menu (ajout de la propriété
-
Optimisations et corrections techniques :
- Fusion et restructuration du code GPU (fusion de
gpu.cppetgpu_commands.cpp, conversion en namespace, optimisations des FIFO et des écritures DMA). - Correction de bugs critiques dans le système de téléchargement HTTP (gestion des mutex, annulations, et synchronisation avec le serveur d’achievements).
- Amélioration des shaders scanline-modern (optimisations et corrections de rendu).
- Ajout d’un système de PCSX expansion region configurable via l’interface utilisateur.
- Fusion et restructuration du code GPU (fusion de
-
Corrections de compatibilité et de stabilité :
- Fix des dates incorrectes dans les commentaires du code CDROM.
- Correction des problèmes de lecture des images CD (support des fichiers
.ccd+imgsans sous-dossier). - Réglages spécifiques pour Resident Evil 2 (limitation de la vitesse de lecture du CD-ROM) et Lego Island 2 (forçage des coordonnées de texture arrondies).
- Correction des timers (gestion des modes synchronisés 0/3 pour le timer 2).
- Fix des achats/achievements (recharge après expiration de jeton et gestion des requêtes HTTP).
-
Améliorations de l’interface utilisateur (UI/UX) :
- Refonte complète des icônes (passage aux SVG optimisés, suppression des PNG redondants, thème monochrome, et gestion des états d’icônes).
- Correction des problèmes de mise à l’échelle double dans le FullscreenUI et préservation du ratio d’aspect des images SVG.
- Ajout d’icônes dans les pages vides de la liste de jeux et dans les messages de confirmation.
- Optimisation des SVGs et des contrôles (case à cocher, boutons).
-
Mises à jour et traductions :
- Mises à jour des traductions pour le français, portugais (Brésil), russe, espagnol (Espagne), et
Changelog complet
v0.1-11295
-
Amélioration majeure pour les textures : Sauvegarde automatique des textures dans le premier répertoire de disque (utile pour le débogage ou la sauvegarde d’état).
-
Corrections critiques de stabilité :
- Correction d’une corruption rare de la VRAM après chargement d’état.
- Fix des problèmes de gestion des registres DMA (DICR) et des interruptions des timers (IRQ).
- Correction des erreurs de lecture/écriture des cartes mémoire (ACK, octets de fin, état ID).
- Résolution des bugs dans les calculs de volume sonore (SPU) et la gestion des DMA.
-
Améliorations graphiques et post-traitement :
- Prise en charge du parsing de presets de post-processing (format simple/référence) et suppression des commentaires C-style dans les fichiers de preset.
- Correction des erreurs de calcul UV pour les rotations à 180° et gestion du flag de changement lors du rechargement d’overlay.
-
Optimisations et corrections système :
- Suppression de fonctions inutilisées (state function, fonctions de la Justifier, etc.).
- Correction des erreurs de lecture des images CD (PPF, PBP, MDS, CUE, M3U) et gestion des timestamps.
- Fix des erreurs de propagation d’exceptions dans
InjectExecutable()et des masques d’écriture incorrects pour les registres EXP1/EXP2.
-
Corrections spécifiques aux backends graphiques :
- Désactivation complète des PBO (Pixel Buffer Objects) sur les cartes NVIDIA (OpenGL).
- Corrections ciblées pour Metal (Apple Silicon) : gestion des mipmaps, alignement des pointeurs et swap d’allocation.
- Fix des erreurs de calcul de sous-ressources (D3D12) et des formats de pixels (RG16/RG16F).
-
Interface utilisateur et fonctionnalités Qt :
- Correction des transitions de fond (fade) lors de la fermeture du jeu et ajout d’une transition pour le sélecteur de fichiers.
- Fix des problèmes de capture d’écran (arguments lus incorrectement) et des dialogues de fichier sans filtre.
- Correction
Changelog complet
v0.1-11108
-
Améliorations majeures de l'interface utilisateur (FullscreenUI) et des fonctionnalités liées :
- Ajout de menus déroulants dans l'interface en plein écran pour les paramètres et les widgets, remplaçant les choix manuels pour les listes longues.
- Correction des problèmes de scroll dans les menus et de perte de focus lors de l'ouverture des propriétés d'un jeu.
- Optimisation visuelle (ex. : suppression du flou corrompu à l'écran de chargement, placement systématique du résumé sous le titre).
-
Corrections critiques de stabilité et de performance :
- Correction d'une corruption potentielle dans le thread vidéo lors d'un rebobinage, ainsi que d'une fuite mémoire en cas d'échec de création du backend.
- Suppression de comportements obsolètes (ex. :
RunOnBackend()dans le thread vidéo, désactivation des post-processing à l'écran de chargement).
-
Optimisations techniques et corrections ciblées :
- Mise en cache des téléchargements HTTP (badges, listes de jeux) via un module dédié (
HTTPCache), réduisant les redondances et améliorant les performances. - Correction de la gestion des erreurs pour les cartes mémoire (propagation correcte des erreurs d'ouverture).
- Prise en charge de la vitesse maximale des cycles pour Monster Rancher 2 et autres ajustements dans la base de données des jeux (ex. : Sol Divide sans support analogique).
- Mise en cache des téléchargements HTTP (badges, listes de jeux) via un module dédié (
-
Améliorations des traductions et de l'interface utilisateur (Qt) :
- Ajout de traductions pour l'azéri et mises à jour des traductions pour le portugais (Brésil) et l'espagnol (Espagne).
- Réorganisation des paramètres avancés (ex. : cache web, dossiers de sauvegarde, captures d'écran regroupés dans une section dédiée).
- Correction de l'affichage des tooltips et suppression de messages d'erreur traduits par erreur.
Pas de modifications spécifiques à macOS ou Apple Silicon mentionnées dans ce changelog.
Changelog complet
v0.1-11026
-
Améliorations des fonctionnalités d’achievements :
- Affichage d’un avertissement lorsque les modes spectator ou encore sont activés (risque de conflits).
- Désactivation automatique du mode encore si le mode spectator est activé.
- Correction des menus de pause invalides dans la vue des achievements avec une fermeture externe.
- Gestion des achievements épinglés : suppression de l’affichage des achievements vides sans progression, et possibilité de les dépinage même sans progression.
- Tri des achievements épinglés dans le stockage pour un affichage cohérent.
-
Corrections techniques majeures :
- Suppression d’un doublon de rendu de flou (blur) dans l’interface en plein écran (notamment à l’écran de chargement si le fond est vide).
- Correction d’une erreur runtime liée à des messages de log trop volumineux dans le système d’achievements (RCheevos).
- Gestion des erreurs HTTP non-HTTP dans les requêtes d’achievements (message d’erreur fourni à l’utilisateur).
- Suppression de redondances dans le code (ex. : suppression de semaphores inutiles au démarrage, suppression de fichiers obsolètes comme gamelistrefreshthread).
-
Stabilité des cheats :
- Désactivation des cheats restaurables avant l’enregistrement d’état, puis réapplication après chargement (évite les conflits).
-
Optimisations mineures et corrections de build :
- Mise à jour des dépendances (SDL Game Controller DB, bibliothèques externes).
- Correction de warnings dans le code Qt (notamment pour les tooltips et conversions).
- Nettoyage de code inutilisé (ex. : méthodes virtuelles multiples dans ProgressCallback).
Changelog complet
v0.1-10998
-
Améliorations UI/UX majeures :
- Ajout d’un rendu d’outline (contour) pour les menus en plein écran et les notifications OSD (On-Screen Display), améliorant la lisibilité, notamment en mode sombre.
- Optimisation des thèmes clairs avec suppression des ombres de texte, ajustement de l’alpha du fond et correction des couleurs des icônes (menus, barre de navigation des paramètres).
-
Corrections critiques :
- Résolution d’un bug de rafraîchissement dynamique de la fréquence d’image via
QScreen, évitant des artefacts ou des latences lors des changements de résolution ou de mode plein écran. - Fix d’un problème de couleurs des sous-menus dans les thèmes clairs, ainsi que du fond des messages OSD en cas d’affichage désactivé côté invité (guest display).
- Résolution d’un bug de rafraîchissement dynamique de la fréquence d’image via
-
Mises à jour techniques :
- Mise à jour des bibliothèques bundlées (FFmpeg headers à la version 8.1.0) et des dépendances internes (date de référence : 2026-03-28).
- Passage à une version récente d’ImGui (3a26b64), avec ajout d’un flou de fond pour le sélecteur d’états de sauvegarde.
-
Améliorations mineures et traductions :
- Mise à jour des traductions pour l’espagnol (Espagne) et le portugais (Brésil).
- Affichage d’un avertissement lors du premier changement de rendu (renderer), et utilisation systématique de
saveAndReloadGameSettings()pour les sauvegardes.
Changelog complet
v0.1-10975
-
Correction critique sur macOS (Apple Silicon) :
- Fixe le nom incorrect de l'exécutable sur ARM64 (M1/M2/M3), résolvant un problème potentiel lors de l'installation ou de l'exécution des builds natifs.
-
Améliorations UI/UX et corrections générales :
- Suppression du verrouillage mutuel principal dans
InputManager, optimisant les performances et réduisant les risques de blocages liés à l'entrée utilisateur. - Correction des problèmes d'affichage des achèvements (indicateurs d'échelle, padding, coordonnées, et gestion des états OSD avant le chargement/déchargement de jeu).
- Fix des bugs critiques dans l'interface FullscreenUI :
- Crash lors de la modification de cheats en plage.
- Suppression incomplète des cheats en plage.
- Fenêtre précédente non effacée à la fermeture.
- Conflits de raccourcis clavier entre achèvements et leaderboards.
- Gestion incorrecte du focus lors du retour à la fenêtre principale.
- Suppression du verrouillage mutuel principal dans
-
Optimisations GPU et corrections techniques :
- Suppression des messages d'erreur erronés ("résolution définie à 0x0") dans la console GPU.
- Correction des problèmes de rendu dans Final Fantasy VIII (travail autour des truncation workarounds).
- Fix des warnings de compilation liés à l'utilisation de
gsvector_nosimdet amélioration de la compatibilité avec OpenGL ES. - Amélioration des effets de post-traitement (stabilisation de l'entrée non mise à l'échelle lors des rechargements et sélection dynamique du shader actif).
-
Nouveautés mineures et améliorations :
- Ajout d'un fond flou pour les notifications et menus dans l'interface FullscreenUI.
- Affichage dynamique des icônes de boutons (PS/Xbox) dans les dialogues, basé sur le périphérique connecté.
- Thème "Dark Ocean" ajouté pour l'interface Qt.
- Notifications visuelles (toasts) pour les achèvements épinglés/dépinglés.
- **
Changelog complet
v0.1-10903
-
Nouveautés majeures :
- Support ajouté pour les images CloneCD (format
CCD) et cohérence des noms de classes pour les images MDS. - Amélioration des récompenses (achievements) :
- Préchargement optimisé des badges (3 badges à l’avance par défaut, activable manuellement).
- Gestion des badges corrompus lors de la reprise de sauvegardes.
- Correction de la logique du moteur de CD-ROM (évite les erreurs redondantes et active immédiatement le bit de démarrage).
- Optimisation de la gestion de la mémoire pour le CPU PGXP (allocation basée sur la RAM active).
- Support ajouté pour les images CloneCD (format
-
Corrections importantes :
- Fix des icônes manquantes et des moteurs inversés dans XInput (compatibilité avec le pont SCP XInput Bridge).
- Correction des sauvegardes corrompues lors de la reprise de jeu (gestion du système).
- Réparation des bords incorrects dans l’interface FullscreenUI (rectangles de fond).
- Suppression de redondances dans l’interface Qt (variables inutiles, boutons désactivés, stylesheets améliorés).
- Fix de l’affichage du message "slot vide" dans le sélecteur de sauvegardes ImGui.
-
Améliorations UI/UX :
- Pause automatique du cœur d’émulation lors de l’ouverture du menu (FullscreenUI).
- Support des thèmes personnalisés dans l’interface Qt (avec stylesheets dédiés).
- Ajout d’une note pour activer le mappage de la souris (lightguns/mouse) dans les paramètres.
- Mise à jour des traductions (espagnol d’Espagne et portugais du Brésil).
Changelog complet
v0.1-10861
-
Améliorations majeures pour les achivements :
- Ajout d’un bucket "Unlocked in Softcore" pour distinguer les réalisations obtenues en mode logiciel.
- Correction des problèmes de spectateur mode (achievements non appliqués correctement) et de filtrage dans l’affichage des leaderboards (affichage limité à un sous-ensemble de cœurs).
-
Corrections critiques :
- Résolution d’un décalage entre l’état fullscreen et l’état réel dans le thread vidéo, pouvant causer des incohérences d’affichage.
- Fix du flicker d’une trame lors du changement de pages de paramètres dans l’interface fullscreen.
- Correction de l’absence de population de la liste des modes d’affichage par défaut sur l’adaptateur graphique principal (FullscreenUI).
-
Optimisations et refactorings :
- Suppression de la persistance de la durée des messages OSD dans les fichiers de configuration (ini).
- Mise à jour de la base de données des jeux pour ajouter des sort names pour des titres comme NBA Live, NFS et NASCAR, ainsi que le support du rumble pour les manettes NeGcon.
- Amélioration de la gestion des notifications d’achievements avec des options de mise à l’échelle (taille des icônes/indicateurs).
-
Spécifique macOS :
- Utilisation des icônes Command et Option natives macOS dans l’interface FullscreenUI pour les raccourcis clavier.
- Correction potentielle de l’initialisation du mode plein écran sur les systèmes utilisant kmsdrm (via SDL, utile pour les builds macOS avec Apple Silicon).
Changelog complet
v0.1-10819
-
Nouveautés majeures :
- Optimisation du frame pacing : activation par défaut de l’option "Optimal Frame Pacing" pour une synchronisation plus fluide avec les fréquences d’affichage.
- Améliorations des performances GPU :
- Correction des problèmes de gestion des fences et des command buffers dans les backends Vulkan et D3D12 (évitement de blocages inutiles).
- Optimisation de la détection des changements de renderer/deinterlace pour éviter les crashes en contexte multithreadé.
- Interface utilisateur (Qt/ImGui) :
- Réorganisation des menus (séparation des paramètres OSD et Capture).
- Ajout d’une option pour éditer manuellement les serials des jeux dans la liste.
- Correction des conflits de raccourcis clavier dans le menu Settings.
- Suppression d’un workaround obsolète lié au thème Classic Windows (Qt).
-
Corrections critiques :
- Stabilité des rendus :
- Fix des erreurs de gestion des viewports vides lors de la désactivation du déinterlace (GPUPresenter).
- Correction des fuites mémoire dans
ImGuiManagerlors de la fermeture. - Résolution des problèmes de null presentation dans
PresentFrameAndRestoreContext()(VideoThread).
- Achievements/Récompenses :
- Correction des achivements non synchronisés (manquants dans la liste ou verrouillages manquants).
- Réduction des chevauchements des notifications de défis et ajustement de leur taille.
- Gestion des entrées :
- Ajout d’une option pour utiliser l’analogique droit comme boutons de trigger (contrôleurs).
- Suppression de la source Sensor obsolète dans
InputManager(remplacée par une intégration SDL native).
- Stabilité des rendus :
-
Spécifique macOS/Apple Silicon (M1/M2/M3) :
- Aucune modification ciblée pour macOS ou Apple Silicon dans ce changelog.
- Note : Les corrections générales de GPU (Vulkan/D3D12) pourraient indirectement
Changelog complet
v0.1-10693
-
Améliorations majeures pour macOS :
- Ajout d’un display link fallback pour la détection de la fréquence de rafraîchissement (utile sur les Mac avec des configurations complexes ou des écrans externes).
- Désactivation par défaut du fractional scaling pour les fenêtres sur macOS (meilleure stabilité visuelle et gestion des performances).
-
Corrections critiques :
- Fix de la détection des changements de fréquence de rafraîchissement lors du basculement d’écran (problème récurrent sous macOS).
- Correction du doublon d’invocation des événements de la molette/souris (Qt), évitant les comportements erratiques.
- Suppression des duplications de modes plein écran (GPUDevice), réduisant les risques de plantages liés aux configurations graphiques.
-
Optimisations système :
- Réécriture complète de la logique de present skipping (GPUThread), avec utilisation du temps de présentation plutôt que du temps actuel pour une meilleure synchronisation.
- Mise à jour cohérente des informations de la fenêtre dans le thread GPU, notamment en mode plein écran (correction d’un bug macOS/Windows).
-
Interface utilisateur et accessibilité :
- Option ajoutée pour inverser les boutons confirm/cancel du gamepad (FullscreenUI), utile pour les configurations locales spécifiques.
- Renommage systématique de "Reset Game" en "Restart Game" (cohérent avec les conventions macOS) et suppression des fonctions obsolètes liées au sélecteur de fichier hôte.
-
Stabilité des fonctionnalités :
- Correction du chargement des achievements après échange de disque (rechargement automatique du jeu).
- Fix de l’affichage incorrect des défis "presque terminés" dans les sous-catégories (problème lié à la logique de mise à jour).
- Évitation de la création de cibles de post-traitement de taille nulle ou NaN lors du chargement (GPUPresenter).
Changelog complet
v0.1-10655
-
Nouveautés majeures dans l'interface utilisateur (UI) :
- Ajout d’un mode "Split Windows" pour organiser les paramètres (notamment les réglages des manettes) en fenêtres séparées, améliorant la lisibilité et la navigation.
- Réorganisation des pages de paramètres pour aligner l’interface Qt avec celle du mode plein écran, avec des boutons horizontaux pour les actions de résumé et les dialogues de message.
- Réduction du temps d’animation des menus (moitié du temps initial) pour une réactivité accrue.
-
Corrections critiques dans l’interface et la gestion des entrées :
- Correction d’un crash lors du survol de boutons flottants dans le menu plein écran.
- Fix des problèmes de détection des entrées en mode "raw input" (manettes, claviers) :
- Suppression du dispositif par défaut Pointer-0 au démarrage.
- Activation de l’option "Disable Background Input" pour éviter les interférences avec ImGui et les autres applications.
- Meilleure gestion des événements de déconnexion des périphériques.
- Correction du hotkey de mise hors tension dans le mode "achievements hardcore" et amélioration des notifications des leaderboards (taille, affichage dans le menu pause).
-
Améliorations spécifiques à macOS :
- Correction d’un problème de taille fractionnelle des fenêtres sous macOS, notamment avec le rendu Metal.
- Limitation de la prise en charge des échelles de fenêtre réelles/fractionnelles au seul rendu Metal (évite les artefacts sur d’autres configurations).
- Suppression du fichier
platform_misc.het migration des fonctions utilitaires vers un module commun (CocoaTools), simplifiant la maintenance pour macOS.
-
Optimisations et corrections techniques :
- Mise à jour de rcheevos à la version 12.2.1, avec des ajustements pour les leaderboards (taille des requêtes, affichage des notifications).
- Correction d’un bug dans la conversion des coordonnées d’affichage pour les modes progressifs forcés (GPU).
- Ajout d’un offset fin pour le GunCon (manette de tir) afin d’affiner la précision de
Changelog complet
v0.1-10570
-
Améliorations majeures de l'émulation CPU :
- Correction des cop0 breakpoints (points d'arrêt) qui déclenchaient trop tard et fixent l’EPC (Program Counter) après un breakpoint, améliorant la précision des interruptions matérielles.
- Ajout de vérifications pour les coprocessor loadstores dans les breakpoints cop0, réduisant les plantages liés aux accès mémoire coprocesseur.
- Optimisation de la gestion des états locaux du CPU via un packing structuré, réduisant la latence interne.
-
Gestion audio et effets sonores :
- Support de la conversion de bit depth et de fichiers float pour les effets sonores, élargissant la compatibilité avec les assets audio modernes.
- Gestion des changements de paramètres audio (ex. volume) sans nécessiter un redémarrage du flux CoreAudioStream, améliorant la réactivité.
-
Interface utilisateur et correctifs critiques :
- Correction du comportement du mode plein écran (FullscreenUI) avec les paramètres de rendu par jeu, évitant les transitions redondantes et les états incohérents.
- Fix des notifications et indicateurs (ex. OSD) dont l’état d’activation était mal synchronisé, ainsi que leur positionnement dans l’interface.
-
Mises à jour des dépendances et stabilité :
- Passage à SDL3 3.4.0 avec des correctifs cherry-picked (ex. gestion des erreurs ZIP), réduisant les risques de plantages liés aux fichiers compressés.
- Optimisation des structures dynamiques (DynamicHeapArray) pour éviter des réallocations inutiles lors des opérations de taille identique.
Note : Aucun changement spécifique à macOS ou Apple Silicon n’est mentionné dans ce changelog.
Changelog complet
v0.1-10530
v0.1-10495
Captures d'écran