Skip to content

Latest commit

 

History

History
73 lines (41 loc) · 3.47 KB

File metadata and controls

73 lines (41 loc) · 3.47 KB

Game Boy Emulator

A Game Boy Emulator for iOS / iPadOS / macOS written in Swift.

With controller supports and palette customization!

Status Games that don't rely on advance CPU tricks or MBC special feature works, e.g Super Mario Land, Kirby Dream Land, Tetris, Tennis, F1 Race, Pokémon...

Under active development (full MBC-2-3-5-6-7 support on the way! now limited to RAM feature, ETA: when its done!). For now limited to GB, GBC support planned.

This repo holds the front-end logic of the emulator for back-end logic (emulation code), see GBKit.

Compatibility

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))

Getting started

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.

Structure

This project/repo is (for now) organiseed as follow:

  • A core package package (as a submodule with its own repo) 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)

Roadmap

  1. Finalize GBKit (./packages/GBKit) (MBC-2-3-4-5)

  2. Finalize GBUIKit (./packages/GBKit) (Keyboard support for macCatalyst,...)

3. Release GBKit (./packages/GBKit) as a standalone Swift Package (with its own git) read to use in any Swift emulator project. -> see GBKit

  1. Release GBUIKit (./packages/GBUIKit) as a standalone Swift Package (with its own git) read to use in any Swift emulator project.

5. Better frontend controls (keyboard, buttons made in SceneKit to avoid SwiftUI performance drop)

  1. Add support for GBC

  2. Create another front-end based on SDL via SwiftSDL

  3. Restore supports for Swift Playgrounds implies to reference GBKit and GBUIKit as dependencies.

Screenshots

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

Troobleshooting

If after changing version configuration xcode still throw error do the following and relaunch xcode:

rm -rf ~/Library/Developer/Xcode/DerivedData

side notes

Game Boy and Nintendo are used under nominative use. As for logo's bytes inclusion please read Sega v. Accolade.