SameBoy

Émulateur v1.0

SameBoy est un émulateur Game Boy, Game Boy Color et Super Game Boy, conçu pour une compatibilité large tout en privilégiant la précision. Développé par Lior Halphon, il cible principalement macOS (avec un minimum requis de macOS 10.12), mais propose aussi des versions pour iOS et watchOS. Son code source est ouvert, ce qui permet des builds pour d’autres plateformes comme Windows ou les systèmes Unix.

Destiné aussi bien aux joueurs qu’aux développeurs, SameBoy mise sur une fidélité technique (debugging avancé, gestion des états de sauvegarde) et des fonctionnalités utilisateur (filtres de scaling, optimisations graphiques). Son interface intuitive et ses outils intégrés en font un choix solide pour explorer le patrimoine rétro sur Mac.

Dernière mise à jour :

Plateformes

Architecture

Mac OS X - macOS Mac OS X - macOS iOS iOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits Metal Metal

Téléchargement et liens

Historique des versions

v1.0.3
  • Améliorations d'émulation majeures pour le Game Boy Color (CGB) en révisions CPU C ou antérieures : Correction de plusieurs bugs liés aux registres PCM (sortie incorrecte du canal 2 pour PCM12, alignement des canaux 1/2, quirks des enveloppes de volume et des retards de démarrage du canal 4), avec prise en compte des corruptions LFSR et des "zombie steps" sur NR43.

  • Compatibilité rétroactive renforcée : Prise en charge des états de sauvegarde depuis la version 0.14.3 et des émulateurs BESS-compatibles, incluant les modifications récentes de l'émulation CGB.

  • Nouveautés pour macOS (front-end Cocoa) :

    • Correction d’un bug où le ROM tournait en arrière-plan sous certaines conditions.
    • Optimisation de la gestion de la batterie (sauvegardes plus fréquentes).
    • Correction de l’affichage de l’icône sur certaines versions de macOS (problème d’affichage précédent).
    • Modification et sauvegarde d’un ROM en cours via le Memory Viewer.
  • Corrections critiques pour les front-ends :

    • Bug lié à la réinitialisation du ROM lors d’un rewind dans le front-end iOS (corrigé).
    • Problème de palette en niveaux de gris bloqués dans le front-end SDL (résolu).
    • Fuites mémoire corrigées dans les cas de chargement échoué de fichiers (cheats, sauvegardes batterie, ROM ISX).
  • Fonctionnalités utilisateur améliorées :

    • Commande examine/x avec modificateurs /s (assembly RGBDS) et $ (valeurs hexadécimales).
    • Rumble ajustable et sauvegardes périodiques dans le front-end iOS.
    • Hotkeys pour les contrôles assignables à 4 commandes dans le front-end iOS.
Changelog complet
This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator ## New/Improved Features * Added support for more controllers in the iOS frontend, including singular Joy-Cons * Pressing buttons while in a locked rewind state now exits rewind mode in the iOS frontend * The iOS frontend now handles save conflicts with a dialog, making syncing saves across different machines and emulators easier * An `examine`/`x` command can now use the `/s` modifier to change its output style to RGBDS-compatible assembly * An `examine`/`x` command can now use `$` in its modifier to use hexadecimal count values * It is now possible to adjust the maximum rumble strength * It is now possible to modify and save a running ROM file from the Memory Viewer in the Cocoa frontend * Controller buttons can now be assigned to one of 4 hotkey commands in the iOS frontend * Periodic saves were added to the iOS frontend * A new screenshot hotkey was added to the SDL frontend * Controller UI hiding in the iOS frontend can now optionally disable the centering of the game screen * The Cocoa and SDL frontends now save the battery more frequently ## Accuracy Improvements/Fixes * Added silence detection to eliminate rounding artifacts when playing nothing but frequencies above Nyquist * Prevented abnormal vblank events from updating the SNES-side buffers prematurely * Fixed a bug that made reading the PCM registers non-deterministic when emulating a CGB in CPU revision C or older * Fixed a bug that caused ROMs to be running in the background under some cases in the Cocoa frontend * Fixed a bug that caused channel `PCM12` to output incorrect channel 2 values when emulating CGB in CPU revision C or older * Improved the accuracy of the `PCM` registers when emulating CGB in CPU revision C or older * Emulated a new quirk where volume envelope ticks are delayed while emulating a CGB in CPU revisions D or E * Corrected the channel alignment of channels 1 and 2 while emulating CGB in CPU revision C or older * Fixed a bug where a volume envelope quirk that was only applicable to channels 1 and 2 was also applied to channel 4 * Major improvements to emulation of channel 4 start delays * Emulated a quirk where one of channel 4's internal counters counts while the channel is inactive * Emulated LFSR corruptions and "zombie steps" when writing to `NR43`, including revision differences ## Bug Fixes * Fixed mouse cursor hiding behavior while debugging in the Cocoa frontend * Fixed an issue where rewinding could reset the ROM under some circumstances in the iOS frontend * Fixed a visual glitch in the reverse search functionality of the Cocoa debugger console * Fixed a memory leak in scenarios where `getline` fails on some platforms * Fixed a resource leak in scenarios where loading a cheat file fails * Fixed resource leaks in certain scenarios where loading a battery save or an ISX ROM fails * Fixed a bug that caused the SDL frontend to be stuck on the greyscale palette * Fixed a bug where starting an audio recording could crash on Windows on some systems * Fixed a bug where the Game Boy Camera could not be emulated correctly on some iPhone models * Fixed a spelling mistake in an iOS tip message * Fixed a bug where certain versions of macOS did not display SameBoy's icon * Fixed an issue that made it impossible to change the RTC mode in link mode in the libretro frontend ## Misc Internal Changes * Updated the boot ROMs so they can be built with the latest version of RGBDS * Removed code for supporting legacy Windows save states from versions no longer compatible with modern versions of SameBoy * Fixed compilation of the SDL frontend on `unsigned char` platforms * Made it possible to build the Cocoa frontend using older SDKs * Removed accidentally committed debugging code from the Cocoa frontend
v1.0.2
  • Améliorations majeures pour macOS (Cocoa frontend) :

    • Correction d’un bug empêchant l’utilisation de la caméra système (MacBook Pro avec caméra intégrée) lors de l’émulation de la Game Boy Camera dans les builds binaires officielles.
    • Ajout d’une option pour forcer un facteur d’échelle entier avec bordures noires (comme dans la version SDL), utile pour les jeux nécessitant une résolution précise.
    • Correction d’un problème de défilement automatique dans le debugger (vue latérale) sur macOS, évitant le scroll systématique vers le bas pour les sorties longues.
    • Améliorations UI/UX ciblées pour macOS 13 (Ventura) et versions ultérieures, incluant des icônes redessinées et une meilleure intégration avec les menus système (ex : menu bar iPadOS 26 étendu à macOS dans certains cas).
  • Corrections critiques d’émulation :

    • Suppression d’un artefact audio sur Game Boy Advance : le channel bias n’est plus appliqué aux canaux désactivés lors du mixage, améliorant la précision sonore (notamment pour les tons haute fréquence).
    • Correction d’un bug dans l’API GB_save_state qui retournait faussement un succès en cas d’échec.
  • Stabilité et compatibilité :

    • Backward-compatible avec les save states à partir de la version 0.14.3 (y compris ceux des émulateurs BESS-compliant).
    • Correction d’un bug où les ROMs importées étaient copiées au lieu d’être déplacées (et inversement) sur iOS, mais aussi affectant indirectement macOS via les builds Cocoa partagées avec iOS (ex : gestion des fichiers lors de mises à jour automatiques).
  • Améliorations mineures mais notables :

    • Ajout d’un graphique de consommation CPU dans la fenêtre de debugger (frontend Cocoa).
    • Turbo mode désormais configurable avec un speed cap (toutes plateformes), remplaçant les options d’overclocking (200%/400%) sur iOS.
    • Alertes utilisateur sur iOS pour les *
Changelog complet
This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator ## New/Improved Features * New `usage` debugger command, displaying the Game Boy CPU's time outside of halt/stop modes * The debugger window in the Cocoa frontend now has a CPU usage graph * The debugger `print`/`eval` command no longer adds zero padding by default * The Cocoa frontend now has an option to force an integer scaling factor with black borders, similar to the SDL frontend * The iOS frontend can now configure rapid A and rapid B buttons on a controller * The SDL frontend now supports two optional V-sync modes * The Cocoa and iOS frontends were updated with UI and UX improvements for macOS and iOS 26, respectively * This also includes new icons when using on these operating systems, as well as on watchOS 26 * Minor UI improvements were also done for older versions of macOS and iOS * SameBoy now supports the new menu bar on iPad OS 26 * Improved frame skipping during turbo mode * Turbo mode can now have a configurable speed cap on all frontends * In the iOS frontend, this supersedes the 200% and 400% overclocking-based turbo mode options * Major improvements to audio quality, eliminating aliasing when playing high frequency tones * The iOS frontend will now alert the user if automatic save states could not be created for some reason (e.g. lack of disk space) * The iOS frontend will now ask for confirmations before resetting a ROM ## Accuracy Improvements/Fixes * Fixed an inaccuracy where the channel bias is applied to disconnected channel when mixing audio while emulating the Game Boy Advance ## Bug Fixes * Fixed a bug that caused certain GameShark codes to be imported incorrectly * Pressing the Zoom button with alt/option pressed now resizes the window to the next integer scale even on newer macOS versions * The debugger side view in the Cocoa frontend no longer scrolls to the bottom on longer outputs * Fixed a bug that causes cheat search to crash when used on a ROM with no cartridge RAM * Fixed a bug that prevented the Game Boy Printer from saving printed images to the iOS photo library * Fixed a bug where certain addresses would be described incorrectly in the Cocoa frontend's memory viewer * Fixed a bug that caused GBS files to play the boot ROM jingle upon loading instead of the first track * Fixed a bug that made the cheat search window remain open even after closing its ROM * Fixed a bug where imported ROMs were copied instead of moved, and vice versa, on iOS * Fixed a bug where Cocoa's VRAM viewer would not show scrolling on some macOS versions * Fixed a bug where emulation would not automatically resume after reaching the end of the rewind buffer on iOS * Fixed a bug where the Cocoa frontend will fail update itself if it wasn't moved to the Applications folder * The iOS fronted now correctly handles cases where a user tries to open a ROM from an internal iOS or SameBoy folder * Mitigated a rare bug where certain actions could spontaneously reset a ROM on iOS * Fixed a bug with the `GB_save_state` API where it returned success even on failures * Fixed a bug that prevented the binary releases of the Cocoa frontend from using the Mac's camera while emulating the Game Boy Camera * Fixed a bug where the interface would rotate while playing motion-controlled games on some iOS devices ## Misc Internal Changes * Fix build on OpenBSD * SameBoy's headers are now compatible with ANSI C and C++ compilation modes * The `DISABLE_*` flags can now be used while building subsets of the `lib` target, as well as the newly-added `headers` target * The Windows build process was changed to require Git Bash and Make instead of the GNUWin package
v1.0.1
  • Amélioration majeure de l’audio : Rendu audio à 2 MHz géré directement par l’émulateur (libretro) pour une meilleure qualité, avec suppression d’un bug de sous-échantillonnage dans la plupart des ports (sauf Wii U, où le traitement reste interne).

  • Corrections critiques pour macOS :

    • Compatibilité SGB : Correction d’un bug affectant les transferts SGB sur plateformes big-endian (impactait notamment la Wii U), résolvant des problèmes graphiques dans des jeux comme Pokémon Bleu ou Pokémon Vert.
    • Stabilité des palettes : Les nouvelles palettes s’affichent désormais correctement dans la frontend Cocoa, même après personnalisation préalable (bug lié à la gestion des états sauvegardés).
  • Améliorations frontales :

    • Debugger SDL : Interface réactive améliorée (fenêtre principale non bloquante en pause, sonnerie terminale sur saisie de touches, et support étendu des versions Windows).
    • Contrôles externes : Option pour utiliser des joysticks comme faux contrôles analogiques (simulation D-pad en alternance rapide).
  • Corrections mineures :

    • Suppression d’un workaround obsolète dans RetroArch (audio plus fort dans le port Wii U).
    • Activation possible de l’audio pour les deux Game Boys en mode câble de liaison (libretro).
    • Correction de la gestion des modèles émulés dans SDL (fermeture immédiate du menu après changement).
  • Précision technique :

    • Augmentation du nombre de phases de limitation de bande pour réduire les harmoniques dans les sons aigus.
    • Optimisation des routines de synthèse FM (SGB jingle) pour une meilleure performance.

(Aucun changement spécifique pour Apple Silicon ou builds .dmg mentionnés dans ce changelog.)

Changelog complet
This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator ## New/Improved Features * UI improvements to the Cocoa palette editor * Improved audio quality on libretro; audio is now rendered by SameBoy at 2MHz, and downsampling is now handled by the libretro frontend itself * In the Wii U build, downsampling is still done by SameBoy * With the meaning of register `$FF75` discovered, it is now referred to as `rPGB` in the debugger * The output of the `watchpoint` debugger command now includes the watchpoint type (read-only, write-only, or read-write) * This makes the default watchpoint type (write-only) more obvious * Windows 11 users can now optionally disable rounded corners in the Graphics Options menu * Official Windows builds no longer require installing MSVC runtimes by linking against `mvscrt.dll` * Major improvements to debugging in the SDL frontend: * The main emulator window is no longer unresponsive when the debugger is stopped * Pressing keys in the emulator window while the debugger is paused now triggers a terminal bell * On Windows, `sameboy.exe` and `sameboy_debugger.exe` have been merged. Press Ctrl+C at any time to interrupt the debugger and open the debugger console, and close the console window at any time to resume normal gameplay. * Async debugging now supports all compatible versions of Windows, adding support for Windows 7, 8.x, and earlier builds of Windows 10 * When using an external controller, joysticks can now optionally be used as faux analog controls * This feature quickly alternates D-pad buttons between pressed and release states to simulate analog inputs * The SDL frontend will now automatically resize the window when switching between models and border modes as long as the window hasn't been manually resized * A workaround for an old RetroArch bug has been removed, audio in the Wii U libretro port is now louder * It is now possible to enable audio for both Game Boys in the Link Cable mode of the libretro port ## Accuracy Improvements/Fixes * OAM randomization is now more accurate * Fixed a bug where certain SGB transfers would copy data incorrectly when running SameBoy on big endian platforms * This fixes many SGB games suffering from garbled graphics when playing on the Wii U * Fixed a potential accuracy issue when emulating MBC7 games * The number of band-limited phases was increased in order to reduce overtones in high-pitched sounds ## Bug Fixes * New palettes will now appear on the Cocoa frontend even if the user have previously customized palettes * Fixed a bug that caused the Pink Pop theme to modify itself once opened in the palette editor, in both the Cocoa and iOS frontends * Fixed a bug where the vertical layout was not usable on certain iPads * Resetting emulation in the SDL version while the emulator is paused will now resume emulation * Fixed a bug where changing the emulated model in the SDL frontend does not immediately closes the menu * Removed Unicode characters from libretro settings, as many frontends cannot display them * Fixed a bug that caused ROMs to run without a window in the Cocoa port after changing the emulated revision * Several iOS and watchOS crashes have been fixed ## Removed Features * Integration with the Homebrew Hub has been removed from the iOS frontend ## Misc Internal Changes * The OpenDesktop thumbnailer is now stripped when built in release configuration, rather than being stripped only upon installation * Official releases of SameBoy now build using the latest version of Clang, gaining speed boost of around 8% * The FM synthesis routines used while rendering the SGB jingle have been optimized for speed

Captures d'écran

Pokemon Blue dans SameBoy Zelda : Link's Awakening dans SameBoy