skylersaleh/SkyEmu

Game Boy Advance, Game Boy, Game Boy Color, and DS Emulator

C

1,301

1,085 commits

updated Oct 13, 2026

See the code

README

Windows Build Mac Build Linux Build Android Build iOS Build FreeBSD Build Web Build Discord Shield

SkyEmu

SkyEmu is a low level GameBoy, GameBoy Color, Game Boy Advance, and DS emulator. Its primary focus is to preserve these great systems for future generations while providing a good user experience through a good mixture of tradeoffs of accuracy, performance, features and usability.

Features

  • Highly accurate Game Boy Advance emulation
  • Game Boy and Game Boy Color Emulation
  • DS Emulation (Beta Quality)
  • High Quality Upscaling Shaders, Color Correction, and Screen Ghosting
  • Cross Platform: Windows, MacOS, Linux, FreeBSD, iOS, Android, and Web
  • Game Controller and Rumble Support with configureable keybinds
  • 4x Persistent Save State Slots with screenshot preview
  • Game fastforward and rewind support (supporting very long rewind times)
  • Action Replay Cheat Code Engine
  • Localization in Armenian, Chinese, Danish, Dutch, English, German, Greek, Italian, Polish, and Russian
  • Support for emulating the Real Time Clock and Solar Sensor
  • CPU, MMIO, and Memory Debuggers
  • Support for loading official BIOS and Boot ROM dumps
  • Support for loading roms compressed in .zip archives
  • REST-like API for asynchronous scripting and other automation

Download / Usage

Stable builds for all platforms can be downloaded for free at: https://github.com/skylersaleh/SkyEmu/releases

The latest version of the emulator can also be played without installing at the following address as a progressive web app:

https://web.skyemu.app/

Development builds(both web and native) that contain the latest features (but are less stable) can be acquired here: https://github.com/skylersaleh/SkyEmu/pull/321

The web app emulates everything locally on your machine using web assembly and javascript. Because of this all files stay local to your machine like the regular native build, however there is a performance cost to performing the emulation inside a web browser.

On Mobile platforms it is recommended to add this to the home screen and launch from there. This will prevent the web browser from auto deleting save files and will make the app full screen.

Note: Platform BIOS/Firmware files are not required as SkyEmu bundles open source replacement BIOS/stubs. However, it is strongly recommended to dump official BIOS/firmware as the open source replacements lack many of the features of the native firmware/BIOS (such as colorizing GB games and the startup splashes) and are not as accurate.

Discord Server

Discord Banner 2

Default Controls:

  • WASD: D-Pad
  • J: A button
  • K: B button
  • ': Select button
  • Enter: Start button
  • U: L shoulder
  • I: R shoulder

On mobile platforms an onscreen touch screen controller is provided.

Loading save files and BIOSs

On web builds save files and the BIOS can be loaded by dragging them onto the page or loading them using the ROM file picker. The GBA BIOS must be named gba_bios.bin for the emulator to pick it up. Save files must be named the name of the rom file with the extension .sav. So for example if the ROM was MyRomFile.gba the save file must be called MyRomFile.sav.

On native builds the above naming convention still applies, but the save/BIOS files must be instead located in the same folder as the ROM file, instead of being dragged or loaded in the emulator itself.

Native Build Instructions

Native builds are experimental currently but can be built using the following commands:

mkdir build
cd build
cmake .. 
cmake --build . 

The output binaries should be in the build/bin folder

Native builds support loading roms through the command line by specifying the path to the ROM as the first argument:

./SkyEmu path/to/rom.gba

Accuracy/Compatibility

SkyEmu has been tested on 100s of ROMs and most common games should be playable with no to minor bugs currently. However, the GBA emulation is significantly more accurate than the GB/GBC emulation.

GBA:

  • Per Pixel PPU Implementation capable of both scan line and mid scan line effects (SkyEmu and NanoBoyAdvance are the only GBA emulators released to support this)
  • Passes the AGS Aging Test ROM (SkyEmu is the second SW based GBA emulator to ever pass this)
  • Can run difficult to emulate GBA games such as the NES Classics Series, Golden Sun and Hello Kitty Miracle Fashion Maker
  • 100% Passes all ArmWrestler Tests
  • 100% Passes all FuzzARM tests
  • 100% Passes arm.gba and thumb.gba
  • Passes 2020/2020 GBA Suite timing tests when utilizing the official GBA BIOS (SkyEmu is one of the few emulators capable of passing this test).
  • Full instruction pipeline and prefetch emulation

GB:

  • Passes all of Blargg's CPU instruction tests
  • Passes DMG and GBC acid2 PPU conformance tests
  • Passes MBCtest
  • Dotclk based PPU implementation
  • Anti-aliased audio synthesis with support for APU changes per sample (supports Pikachu's voice in Pokemon Yellow/Pokemon Pinball)

AI Policy

All SkyEmu code has been written by humans and we do not accept AI generated code into the repo.

We understand the utility in AI assisted development and still allow AI to be used for debug, code understanding, and other purposes that do not yield generated output into the repo.

We do this for a number of reasons:

  • AI generated code review is generally substantially more challenging than code review of code authored by humans and has questionable copyright ownership.
  • We really want people to understand code that gets submitted to the emulator as many changes are interconnected. The knowledge of the changes made by AI tends to disappear when the context does. While human knowledge persists, even if an AI was used to teach the human how to make the changes.
  • Code quality standards of many projects have substantially reduced after the incorporation of broad scale AI usage from the two above issues.
  • Developers who wish to add functionality using AI tooling are generally very enthusiastic about the software and emulation development overall. However, they feel lost in the complexity of modern emulators. AI code generation robs them of the ability to learn how to make these changes and robs the community of the next generation of emulator developers. For this reason, we still allow AI to be used as a teaching aid for people who wish to contribute, but don't allow it to do all work for them, but instead encourage its use to help them navigate the complexities of the project so that they can grow their skills and are able to contribute themselves.
  • It has come to our attention that SkyEmu is one of the handful of large emulator projects in active development that does not have any AI generated code, and we would like to keep it as an option for usage by people who prefer non-AI generated SW.

An exemption is made for translation strings in localization.h and localization.c. UI translation string generation may be AI assisted, but a human translation is preferred when available.

Birds of a Feather

  • Pokemon Bot: A discord bot that can connect to SkyEmu to allow your discord users to play GB/GBC/GBA/NDS games.
  • Panda3DS: Panda themed HLE 3DS emulator
  • NanoBoyAdvance: A Game Boy Advance emulator focusing on hardware research and cycle-accurate emulation
  • Dust: DS emulator for desktop devices and the web
  • Kaizen: Experimental work-in-progress low-level N64 emulator
emulation
emulator
gameboy
gameboy-advance
gameboy-color
gameboy-emulator
nintendo-ds
wasm

skylersaleh/SkyEmu

Game Boy Advance, Game Boy, Game Boy Color, and DS Emulator

C

1,301

1,085 commits

updated Oct 13, 2026

See the code

README

Windows Build Mac Build Linux Build Android Build iOS Build FreeBSD Build Web Build Discord Shield

SkyEmu

SkyEmu is a low level GameBoy, GameBoy Color, Game Boy Advance, and DS emulator. Its primary focus is to preserve these great systems for future generations while providing a good user experience through a good mixture of tradeoffs of accuracy, performance, features and usability.

Features

  • Highly accurate Game Boy Advance emulation
  • Game Boy and Game Boy Color Emulation
  • DS Emulation (Beta Quality)
  • High Quality Upscaling Shaders, Color Correction, and Screen Ghosting
  • Cross Platform: Windows, MacOS, Linux, FreeBSD, iOS, Android, and Web
  • Game Controller and Rumble Support with configureable keybinds
  • 4x Persistent Save State Slots with screenshot preview
  • Game fastforward and rewind support (supporting very long rewind times)
  • Action Replay Cheat Code Engine
  • Localization in Armenian, Chinese, Danish, Dutch, English, German, Greek, Italian, Polish, and Russian
  • Support for emulating the Real Time Clock and Solar Sensor
  • CPU, MMIO, and Memory Debuggers
  • Support for loading official BIOS and Boot ROM dumps
  • Support for loading roms compressed in .zip archives
  • REST-like API for asynchronous scripting and other automation

Download / Usage

Stable builds for all platforms can be downloaded for free at: https://github.com/skylersaleh/SkyEmu/releases

The latest version of the emulator can also be played without installing at the following address as a progressive web app:

https://web.skyemu.app/

Development builds(both web and native) that contain the latest features (but are less stable) can be acquired here: https://github.com/skylersaleh/SkyEmu/pull/321

The web app emulates everything locally on your machine using web assembly and javascript. Because of this all files stay local to your machine like the regular native build, however there is a performance cost to performing the emulation inside a web browser.

On Mobile platforms it is recommended to add this to the home screen and launch from there. This will prevent the web browser from auto deleting save files and will make the app full screen.

Note: Platform BIOS/Firmware files are not required as SkyEmu bundles open source replacement BIOS/stubs. However, it is strongly recommended to dump official BIOS/firmware as the open source replacements lack many of the features of the native firmware/BIOS (such as colorizing GB games and the startup splashes) and are not as accurate.

Discord Server

Discord Banner 2

Default Controls:

  • WASD: D-Pad
  • J: A button
  • K: B button
  • ': Select button
  • Enter: Start button
  • U: L shoulder
  • I: R shoulder

On mobile platforms an onscreen touch screen controller is provided.

Loading save files and BIOSs

On web builds save files and the BIOS can be loaded by dragging them onto the page or loading them using the ROM file picker. The GBA BIOS must be named gba_bios.bin for the emulator to pick it up. Save files must be named the name of the rom file with the extension .sav. So for example if the ROM was MyRomFile.gba the save file must be called MyRomFile.sav.

On native builds the above naming convention still applies, but the save/BIOS files must be instead located in the same folder as the ROM file, instead of being dragged or loaded in the emulator itself.

Native Build Instructions

Native builds are experimental currently but can be built using the following commands:

mkdir build
cd build
cmake .. 
cmake --build . 

The output binaries should be in the build/bin folder

Native builds support loading roms through the command line by specifying the path to the ROM as the first argument:

./SkyEmu path/to/rom.gba

Accuracy/Compatibility

SkyEmu has been tested on 100s of ROMs and most common games should be playable with no to minor bugs currently. However, the GBA emulation is significantly more accurate than the GB/GBC emulation.

GBA:

  • Per Pixel PPU Implementation capable of both scan line and mid scan line effects (SkyEmu and NanoBoyAdvance are the only GBA emulators released to support this)
  • Passes the AGS Aging Test ROM (SkyEmu is the second SW based GBA emulator to ever pass this)
  • Can run difficult to emulate GBA games such as the NES Classics Series, Golden Sun and Hello Kitty Miracle Fashion Maker
  • 100% Passes all ArmWrestler Tests
  • 100% Passes all FuzzARM tests
  • 100% Passes arm.gba and thumb.gba
  • Passes 2020/2020 GBA Suite timing tests when utilizing the official GBA BIOS (SkyEmu is one of the few emulators capable of passing this test).
  • Full instruction pipeline and prefetch emulation

GB:

  • Passes all of Blargg's CPU instruction tests
  • Passes DMG and GBC acid2 PPU conformance tests
  • Passes MBCtest
  • Dotclk based PPU implementation
  • Anti-aliased audio synthesis with support for APU changes per sample (supports Pikachu's voice in Pokemon Yellow/Pokemon Pinball)

AI Policy

All SkyEmu code has been written by humans and we do not accept AI generated code into the repo.

We understand the utility in AI assisted development and still allow AI to be used for debug, code understanding, and other purposes that do not yield generated output into the repo.

We do this for a number of reasons:

  • AI generated code review is generally substantially more challenging than code review of code authored by humans and has questionable copyright ownership.
  • We really want people to understand code that gets submitted to the emulator as many changes are interconnected. The knowledge of the changes made by AI tends to disappear when the context does. While human knowledge persists, even if an AI was used to teach the human how to make the changes.
  • Code quality standards of many projects have substantially reduced after the incorporation of broad scale AI usage from the two above issues.
  • Developers who wish to add functionality using AI tooling are generally very enthusiastic about the software and emulation development overall. However, they feel lost in the complexity of modern emulators. AI code generation robs them of the ability to learn how to make these changes and robs the community of the next generation of emulator developers. For this reason, we still allow AI to be used as a teaching aid for people who wish to contribute, but don't allow it to do all work for them, but instead encourage its use to help them navigate the complexities of the project so that they can grow their skills and are able to contribute themselves.
  • It has come to our attention that SkyEmu is one of the handful of large emulator projects in active development that does not have any AI generated code, and we would like to keep it as an option for usage by people who prefer non-AI generated SW.

An exemption is made for translation strings in localization.h and localization.c. UI translation string generation may be AI assisted, but a human translation is preferred when available.

Birds of a Feather

  • Pokemon Bot: A discord bot that can connect to SkyEmu to allow your discord users to play GB/GBC/GBA/NDS games.
  • Panda3DS: Panda themed HLE 3DS emulator
  • NanoBoyAdvance: A Game Boy Advance emulator focusing on hardware research and cycle-accurate emulation
  • Dust: DS emulator for desktop devices and the web
  • Kaizen: Experimental work-in-progress low-level N64 emulator
emulation
emulator
gameboy
gameboy-advance
gameboy-color
gameboy-emulator
nintendo-ds
wasm

Significant stargazers

Sara Vieira

4,284 followers · starred Aug 2023

Wunk

642 followers · starred Jul 2022

JakobDev

32 followers · starred Dec 2022

omar

4,254 followers · starred Dec 2023