A Game Boy Emulator for iOS / iPadOS / macOS written in Swift.
With controller supports and palette customization!
Status Games that don't need MBC supports or advance CPU tricks work, e.g Tetris, Tennis...
Work in progress (still under active development) MBC and Audio coming (ETA: when its done!). For now limited to GB, GBC support planned.
This projects aims at being compatible with the following platforms:
- iOS (14+)
- iPadOS (14+)
- macCatalyst (14+)
- Swift Playgrounds (both macOS and iPadOS (WIP @see roadmap))
Open either ./src/app/GameBoyEmulator/GameBoyEmulator.xcodeproj
or ./src/app/GameBoyEmulator.swiftpm
with xcode
on macOS.
n.b Swift Playgrounds is also supported on macOS but debugging remains impossible as long as performance which are tied to debug xcscheme.
This project is (for now) a mono repo that holds the following:
- A core package package
GBKit
in./packages/GBKit
(where the magic happens) - A SwiftUI package
GBUIKit
in./packages/GBUIKit
(SwiftUI frontend) - The emulator app in
./src/app
(the macOS/iOS/iPadOS app itself)
-
Finalize GBKit (
./packages/GBKit
) (MBC, APU...) -
Finalize GBUIKit (
./packages/GBKit
) (Keyboard support for macCatalyst,...) -
Release GBKit (
./packages/GBKit
) as a standalone Swift Package (with its own git) read to use in any Swift emulator project. -
Release GBUIKit (
./packages/GBUIKit
) as a standalone Swift Package (with its own git) read to use in any Swift emulator project. -
Add support for GBC
-
Restore supports for Swift Playgrounds implies to reference GBKit and GBUIKit as dependencies.
iOS (game view / DMG palette) | iOS (game view / MGB palette) | iOS (game view / custom palette) | iOS (game view / landscape fullscreen) | iOS (settings view) | iPadOS | macOS |
---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Game Boy and Nintendo are used under nominative use. As for logo's bytes inclusion please read Sega v. Accolade.