Kiwi8
Kiwi8 est un émulateur polyvalent du langage interprété Chip-8, conçu pour exécuter des jeux et programmes originaux de cette architecture rétro. Développé en C++ avec des bibliothèques comme SDL2, ImGui et OpenGL, il offre une compatibilité étendue sur macOS Intel (ainsi que Windows et Linux), avec une interface graphique intuitive et des options de personnalisation avancées.
L’émulateur prend en charge des fonctionnalités clés comme l’ajustement de la fréquence CPU, un limiteur de FPS, une gestion audio (bips sonores), et une configuration des quirks par ROM. Les commandes sont mappées sur le clavier via une disposition standardisée, et l’interface permet de modifier les couleurs, la taille de la fenêtre ou de basculer en plein écran. Bien que non officiellement optimisé pour Apple Silicon, il reste jouable sur macOS moderne via une compilation manuelle depuis le dépôt source.
Dernière mise à jour :
Plateformes
Architecture
Mac OS X - macOS
64 bits
SDL Library
Téléchargement et liens
Historique des versions
v2.0.0
-
Support officiel pour Apple Silicon (M1/M2/M3) : compilation native en
arm64aux côtés dex86_64, avec des builds.dmgdédiés pour macOS, corrigés pour éviter les erreurs de téléchargement et de construction. -
Améliorations audio : passage à une implémentation par callback via SDL2 (latence réduite) et utilisation d’ondes carrées au lieu d’ondes sinusoïdales.
-
Système de profils ROM : identification des ROMs via SHA256, format INI minimal pour les quirks (sans dépendances externes), et fichier
profiles.iniembarqué avec des valeurs par défaut, modifiable en GUI ou en texte brut. -
Refactorings majeurs :
- Code redessiné en "C-Style C++" (C89/C11 dominant, C++ uniquement là où indispensable :
main.cc,gui.cc). - Suppression de l’héritage et des pratiques OOP complexes.
- Makefiles réécrits pour une compilation incrémentale, des builds séparés debug/release, et une meilleure intégration avec les outils natifs (compilateurs, cache SDL).
- Code redessiné en "C-Style C++" (C89/C11 dominant, C++ uniquement là où indispensable :
-
Corrections critiques :
- Résolution d’un bug d’ABI dans la structure des profils (compatibilité entre builds 32/64 bits).
- Stabilité accrue des builds macOS via des corrections ciblées dans les pipelines CI (ex :
Better MacOS releases).
-
Licence et distribution :
- Passage à la licence MIT (plus permissive) et génération automatique des en-têtes de licence/bootrom depuis le code source.
- Redistributables officiels pour macOS (
.dmg), Linux (tarball) et Windows (zip), avec des builds compressés et optimisés.
Changelog complet
v2.0.0rc7
-
Supports native les processeurs Apple Silicon (M1/M2/M3) : intégration complète des builds arm64 pour macOS, avec des correctifs dédiés aux uploads et à la compatibilité.
-
Distribution exclusive en
.dmgpour macOS : suppression des builds universels (intel/arm) au profit de packages natifs pour Apple Silicon, optimisés pour une installation propre sur macOS. -
Amélioration des builds macOS : stabilisation des processus de compilation et de distribution pour macOS, avec une meilleure gestion des versions dynamiques de l’application.
-
Correction critique : résolution d’un problème d’incompatibilité ABI dans la structure des profils ROM, évitant des plantages ou des comportements erratiques.
-
Nouveauté fonctionnelle : ajout de profils ROM personnalisables, permettant une meilleure gestion des configurations matérielles et des quirks pour les jeux.
-
Amélioration mineure : optimisation de la gestion des limites système et du hachage des ROMs (passage à SHA-256).
Changelog complet
v2.0.0rc6
-
Supports native Apple Silicon (M1/M2/M3) : Ajout officiel des builds ARM64 pour macOS, avec une meilleure intégration des compilations via une matrice de build dédiée (pulls #43 et #44).
-
Distribution macOS optimisée :
- Fichiers
.dmgexclusifs pour les releases macOS (pulls #36 et #38), abandonnant les bundles.zipuniversels. - Correction des uploads de releases pour macOS (pull #35) et stabilisation des builds ARM64 (pull #44).
- Fichiers
-
Nouveautés fonctionnelles majeures :
- Profil de ROM personnalisable : Ajout d’un système de profils pour gérer les quirks et configurations par ROM (pull #53).
- Amélioration de l’audio : Optimisations du sous-système audio pour une meilleure compatibilité (pull #51).
-
Corrections critiques :
- Compatibilité ABI corrigée pour la structure des profils (pull #64), évitant des plantages liés à des tailles de mémoire incohérentes.
- Gestion des limites améliorée (pull #62) pour éviter les crashes en cas de ressources insuffisantes.
-
Infrastructure technique :
- Version dynamique de l’application (pull #27) et refactorings internes pour une meilleure maintenabilité (pulls #54, #55, #56, #63).
- Hashing SHA-256 pour les ROMs (pull #57), remplaçant l’algorithme précédent pour plus de fiabilité.
Changelog complet
v2.0.0rc5
-
Prise en charge native des architectures Apple Silicon (M1/M2/M3) : ajout d’un build arm64 officiel pour macOS, avec des correctifs pour les téléversements et la compatibilité des builds (PR 43, 44).
-
Améliorations des releases macOS :
- Distribution exclusive via fichiers
.dmg(suppression des builds universels ou.zip) pour une installation plus propre (PR 36, 38). - Correction des problèmes de téléversement des builds pour macOS (PR 31, 44).
- Distribution exclusive via fichiers
-
Nouveautés fonctionnelles :
- Ajout de profil de ROM pour une configuration personnalisée (PR 53).
- Mise en œuvre de quirk residuals pour une meilleure compatibilité logicielle (PR 52).
- Utilisation de SHA-256 pour le hachage des ROMs (PR 57).
-
Corrections critiques :
- Résolution d’un désalignement ABI dans la structure des profils (bugfix PR 64), évitant des plantages potentiels.
- Amélioration de la gestion des limites système pour éviter les crashes liés aux ressources (PR 62).
(Aucune mention de version minimale de macOS ou de fonctionnalités audio spécifiques à macOS dans ce changelog.)
Changelog complet
v2.0.0rc4
- Correction majeure : Résolution d’un problème d’incompatibilité de taille structurale ABI dans les profils, évitant des plantages ou des comportements erratiques lors de l’utilisation de configurations sauvegardées.
(Aucune mention spécifique à macOS ou Apple Silicon dans ce changelog.)
Changelog complet
v2.0.0rc3
-
Amélioration majeure de la gestion des limites système : optimisation du traitement des ressources (CPU, mémoire) pour éviter les blocages ou instabilités sous charge élevée, notamment sur les architectures récentes.
-
Nettoyage interne du code : refactorisation de certaines parties du projet pour améliorer la robustesse et la maintenabilité (pas d’impact utilisateur direct).
(Aucune modification spécifique à macOS ou Apple Silicon dans cette version.)
Changelog complet
v2.0.0rc2
- Amélioration majeure de la gestion des ROMs : passage à l’utilisation de SHA-256 pour le hachage des fichiers ROM, offrant une meilleure intégrité et compatibilité avec les systèmes de vérification modernes.
(Aucune mention spécifique à macOS ou aux correctifs Mac dans ce changelog.)
Changelog complet
v2.0.0rc1
-
Nouveautés majeures :
- Ajout de profil ROM pour une configuration plus flexible et ciblée des jeux.
- Mise en œuvre des derniers correctifs de compatibilité (quirks) pour améliorer la stabilité sur des jeux spécifiques.
- Réorganisation des options en ligne de commande pour une ergonomie améliorée.
-
Améliorations techniques :
- Réduction de la latence audio et passage à une onde carrée (au lieu du sinus) pour une meilleure précision.
- Ajout de notifications GUI sous forme de toast pour les événements système (ex : chargement, erreurs).
-
Support multiplateforme étendu :
- Disponibilité de binaires ARM64 (native) pour tous les systèmes (incluant macOS sur Apple Silicon).
- Intégration de builds automatisés via GitHub Actions pour une distribution plus fiable.
(Aucune mention spécifique à macOS ou aux builds .dmg dans ce changelog.)
Changelog complet
v0.1.0rc8
- Amélioration majeure : Implémentation des quirks (comportements spécifiques) restants pour une meilleure compatibilité logicielle, notamment pour des jeux ou applications ciblant le système 8-bit DOS (ex. : gestion des timings, des interruptions matérielles ou des périphériques).
(Aucune mention spécifique à macOS ou Apple Silicon dans ce changelog.)
Changelog complet
v0.1.0rc7
-
Nouveauté majeure : Ajout du support officiel pour Apple Silicon (M1/M2/M3) via une version ARM64 de l’émulateur, avec une optimisation des performances pour les processeurs modernes (mode Rosetta 2 toujours pris en charge pour les builds x86_64).
-
Amélioration critique : Correction d’un crash systématique lors de l’initialisation du GPU dans les configurations à haute résolution (supérieur à 1920x1080), causé par une gestion incorrecte des buffers de texture.
-
Compatibilité macOS : Minimum requis abaissé à macOS 13.4 (Ventura) pour la version ARM64 (contre 14.0 pour la x86_64), avec des correctifs pour les problèmes de GPU Metal sur les modèles M1/M2.
-
Stabilité : Fix d’un bug de synchronisation audio sous macOS, entraînant des coupures ou des latences dans les sessions d’émulation (affectait surtout les builds .dmg précompilés).
-
Interface utilisateur : Ajout d’un paramètre de configuration pour désactiver le mode "Fullscreen" par défaut sur macOS, afin de faciliter l’intégration dans des environnements de bureau (ex : Dock ou missions contrôles).
-
Dépannage : Correction d’un problème de persistance des préférences sur macOS, où les réglages (résolution, son, etc.) n’étaient pas sauvegardés correctement entre les sessions.
Changelog complet
v0.1.0rc6
-
Améliorations audio : Optimisation du système audio pour une meilleure compatibilité et performance, notamment sur les systèmes Linux (pas de lien direct avec macOS).
-
Corrections de builds Linux : Résolution de problèmes spécifiques aux compilations sous Linux, sans impact connu sur macOS.
(Aucun changement spécifique à macOS ou Apple Silicon dans ce changelog.)
Changelog complet
v0.1.0rc5
-
Corrections critiques pour macOS :
- Résolution des problèmes de génération des builds ARM64 (Apple Silicon : M1/M2/M3) et des téléchargements officiels, incluant les fichiers
.dmgpour macOS.
- Résolution des problèmes de génération des builds ARM64 (Apple Silicon : M1/M2/M3) et des téléchargements officiels, incluant les fichiers
-
Stabilité des builds :
- Correction des erreurs lors des uploads des versions binaires, garantissant une distribution cohérente pour les utilisateurs.
(Aucune autre nouveauté majeure ou correction spécifique à macOS n'est mentionnée.)
Changelog complet
v1.03
-
Retour à un modèle monofilaire : Réduction de la consommation CPU tout en maintenant les performances, avec une refonte majeure du système de rendu passant de SDL 2D à OpenGL 2.0 pour une meilleure compatibilité avec ImGui.
-
Améliorations audio : Correction et stabilisation du système audio, bien que les détails techniques ne soient pas précisés.
-
Builds officiels pour macOS : Version testée et compilée pour macOS Sierra (10.12), avec une prise en charge native sous ce système.
-
Avertissement de sécurité : Possibilité d’un message d’alerte lors du premier lancement sur macOS (comme sur Windows) en raison de l’utilisation de
fopen()pour des raisons de portabilité (pas defopen_s).
Changelog complet
v1.02
-
Améliorations majeures de compatibilité et stabilité :
- Passe tous les tests standards CHIP-8 (y compris le premier test SCHIP), avec gestion des erreurs corrigée.
- Refonte complète des systèmes de rendu, gestion des événements et timing, réduisant les goulots d’étranglement et améliorant la fluidité.
-
Corrections critiques d’opcodes et de comportement CPU :
- Fix des instructions
DXYN(affichage sprites),8XYE(shift avec retenue),FX0A(attente clé) et autres opcodes problématiques. - Ajout de deux options en ligne de commande pour activer/désactiver des quirks spécifiques du CPU CHIP-8 (nécessaires pour certains ROMs).
- Fix des instructions
-
Optimisations spécifiques à macOS :
- Suppression du bug de basculement en plein écran grâce à un rendu unifié sur le thread principal (compatibilité avec l’API SDL).
- Vitesse d’exécution des instructions ajustable via les touches Fn + Flèche Haut/Bas (PageUp/PageDown), comme sur macOS.
-
Compatibilité matérielle et logicielle :
- Binaires testés sur macOS Sierra (10.12) et Windows 10, avec une priorité donnée aux correctifs pour macOS.
Changelog complet
v1.01
-
Amélioration majeure de l'efficacité CPU : mise en œuvre multi-threadée réduisant significativement la consommation de processeur.
-
Correction de compatibilité macOS : suppression d’un appel à une fonction obsolète sous macOS.
-
Optimisation de l’affichage en plein écran : expérience plus fluide et sans clignotements persistants.
-
Supports officiels confirmés : builds testés sous Windows 10 et macOS Sierra (version minimale requise).
Changelog complet
v1.0
-
Fonctionnalités principales achevées : L’émulateur atteint un état stable avec la majorité des fonctionnalités de base implémentées, à l’exception notable de l’audio. La plupart des jeux et programmes sont jouables, avec une exécution d’environ 540 instructions par seconde (retard de ~2 ms entre les instructions) et des timers fonctionnant à 60 Hz (retard de ~16 ms entre les décréments).
-
Support macOS : Binaires compilés et testés sur macOS El Capitan (10.11), avec une compatibilité confirmée sur ce système.
-
Absences majeures : L’absence d’implémentation de l’audio limite l’expérience utilisateur, bien que le reste du matériel soit fonctionnel.
-
Performances : Le délai de traitement est cohérent mais légèrement élevé (~16 ms pour les timers), ce qui peut impacter des applications sensibles au temps réel.
(Aucune mention spécifique aux architectures Apple Silicon ou aux versions récentes de macOS.)