Kiwi8

Émulateur v1.03

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

Autres ordinateurs

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 64 bits 64 bits SDL Library SDL Library

Téléchargement et liens

Historique des versions

v2.0.0
  • Support officiel pour Apple Silicon (M1/M2/M3) : compilation native en arm64 aux côtés de x86_64, avec des builds .dmg dé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.ini embarqué 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).
  • 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
**Summary:** - Add linux builds (Ubuntu/Debian with GTK3) - Implement remaining quirks - Add some basic CI pipelines for GitHub Actions - lint - build - release - Compile for arm64 architecture in addition to X86_64 - Add quirks profiles system - minimal INI format as to not require extra parser libs - lookup ROMs via SHA256 - profiles.ini shipped with executables with common quirk defaults - profiles editable via profiles.ini file or within GUI - Redo audio - switch from sine wave to square wave - use SDL2's callback audio instead of queued audio system (lower latency) - Refactor almost everything - Use what I call "C-Style C++" - Opt for the "more old-school" ANSI C (C89/C11) style - Only use C++ where necessary - main.cc (for overall linking) - gui.cc (required for imgui c++ lib) - No more dumb OOP and weird C++ keywords - Rewrite makefiles - uses platform native make/compiler toolchain - incremental compilation - cached sdl builds - separate debug/release builds - easily modifiable/extendable - Move from GPL to MIT license (more permissive) - Generate license and bootrom headers from source - Provide platform (compressed) redistributables - linux tarball - windows zip - macos dmg - Add toast style notifications --- ## What's Changed * Update Some Things by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/26 * Make app version dynamic by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/27 * Update Project Structure and Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/28 * Improve Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/30 * Fix release uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/31 * Test squash merge by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/33 * Better MacOS releases by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/35 * dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/36 * Feature/dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/38 * Add build matrix amd64 and arm64 by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/43 * Fix release uploads and arm64 macos builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/44 * Fix uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/45 * Test/Fix linux builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/46 * Improve Audio by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/51 * Implement remaining quirks by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/52 * Add rom profiles by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/53 * refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/54 * Clean up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/55 * Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/56 * Use sha256 for rom hashing by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/57 * Clean Up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/59 * Handle limits better by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/62 * Minor Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/63 * Bugfix - profiles struct size ABI mismatch by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/64 * Statically link C Runtime on Windows with MSVC by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/68 * Update README by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/69 * Chores by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/70 * Update copyright string by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/76 * Refactor profiles dot c by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/75 * leave external source untouched. add impl files to shared source by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/77 **Full Changelog**: https://github.com/Diesel-Net/kiwi-8/compare/v1.03...2.0.0
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 .dmg pour 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
## What's Changed * Update Some Things by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/26 * Make app version dynamic by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/27 * Update Project Structure and Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/28 * Improve Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/30 * Fix release uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/31 * Test squash merge by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/33 * Better MacOS releases by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/35 * dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/36 * Feature/dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/38 * Add build matrix amd64 and arm64 by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/43 * Fix release uploads and arm64 macos builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/44 * Fix uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/45 * Test/Fix linux builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/46 * Improve Audio by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/51 * Implement remaining quirks by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/52 * Add rom profiles by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/53 * refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/54 * Clean up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/55 * Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/56 * Use sha256 for rom hashing by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/57 * Clean Up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/59 * Handle limits better by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/62 * Minor Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/63 * Bugfix - profiles struct size ABI mismatch by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/64 * Statically link C Runtime on Windows with MSVC by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/68 * Update README by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/69 * Chores by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/70 **Full Changelog**: https://github.com/Diesel-Net/kiwi-8/compare/v1.03...2.0.0rc7
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 .dmg exclusifs pour les releases macOS (pulls #36 et #38), abandonnant les bundles .zip universels.
    • Correction des uploads de releases pour macOS (pull #35) et stabilisation des builds ARM64 (pull #44).
  • 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
## What's Changed * Update Some Things by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/26 * Make app version dynamic by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/27 * Update Project Structure and Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/28 * Improve Builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/30 * Fix release uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/31 * Test squash merge by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/33 * Better MacOS releases by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/35 * dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/36 * Feature/dmg release only by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/38 * Add build matrix amd64 and arm64 by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/43 * Fix release uploads and arm64 macos builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/44 * Fix uploads by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/45 * Test/Fix linux builds by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/46 * Improve Audio by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/51 * Implement remaining quirks by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/52 * Add rom profiles by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/53 * refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/54 * Clean up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/55 * Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/56 * Use sha256 for rom hashing by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/57 * Clean Up by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/59 * Handle limits better by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/62 * Minor Refactor by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/63 * Bugfix - profiles struct size ABI mismatch by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/64 * Statically link C Runtime on Windows with MSVC by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/68 * Update README by @tomdaley92 in https://github.com/Diesel-Net/kiwi-8/pull/69 **Full Changelog**: https://github.com/Diesel-Net/kiwi-8/compare/v1.03...2.0.0rc6