
PokeSwift
github.com/dimillian/pokeswift- Category
- Entertainment
- Rank
- No. 1413Tools index
Previous survey · No. 1408 ·
- Pricing
- Open Source
- Type
- GAME
- Builder
- dimillian
- GitHub
- 363 stars
- Date
About
Dimillian's Pokémon Red/Blue engine reimplementation in Swift and SwiftUI — playable for learning and nostalgia.
What it does
PokeSwift converts authoritative game data, scripts, maps, graphics, and audio into deterministic runtime artifacts, then loads them into a native macOS application. Separate engine, rendering, interface, audio, content, and telemetry layers handle the resulting game state.
Why it's ranked here
The architecture is unusually instructive, especially its clean boundary between source extraction and runtime execution. However, the stated playable flow currently stops at the title menu, so the engineering scope is much stronger than the delivered game coverage.
What's good
The runtime never parses assembly directly. A dedicated extractor normalizes source material into typed manifests and copied assets, which makes loading deterministic and validation practical. Headless state, rendering, SwiftUI presentation, audio, content handling, and telemetry have distinct responsibilities. Multiple unit-test targets reinforce those boundaries.
Tradeoffs
The native application requires macOS 26.0 or later, sharply limiting who can run it. Current status only confirms progress through splash, title attract, and title menu. The repository also carries the original disassembly, assets, extraction machinery, Swift workspace, and ROM build system, creating substantial conceptual and tooling surface.
How to use it well
Use it as a reference for source-driven game preservation, deterministic asset extraction, native Swift architecture, or telemetry-assisted parity work. It best suits engineers comfortable with build tooling and original game data. It does not yet cover complete gameplay or cross-platform native app delivery.
Technical notes+
Project.swift defines Swift 6.0 static-framework targets for PokeDataModel, PokeAudio, PokeContent, PokeTelemetry, PokeCore, PokeRender, and PokeUI, plus the PokeMac application, PokeExtractCLI command-line tool, and eight unit-test targets. Sources/PokeExtractCLI/main.swift exposes extract and verify commands with game, repository-root, and output-root arguments. Content/Red/ holds committed runtime artifacts, while Sources/PokeContent/ loads and validates them. docs/audio-engine.md documents manifest-driven PCM rendering through AVAudioEngine, and docs/FIELD_RENDERING_PIPELINE.md plus docs/BATTLE_ANIMATION_PIPELINE.md describe extracted-data pipelines into native rendering. Makefile and docs/INSTALL.md retain the RGBDS-based original ROM build surface.
Observed
- Primary language
- The native application and supporting targets use Swift 6.0; the repository also retains the original Game Boy assembly disassembly.
- Packaging
- Tuist manages a workspace containing a macOS app, static frameworks, a command-line tool, and unit-test targets.
- Interfaces
- The project provides a native macOS graphical application and a command-line extractor with extract and verify operations.
- Platform support
- The Swift application targets macOS 26.0 and later.
- Runtime content
- The application consumes deterministic extracted artifacts and does not parse assembly source at runtime.
- Test structure
- Project.swift declares eight unit-test targets across extraction, core, content, data model, telemetry, UI, app, and rendering concerns.
Read from README.md, Makefile, docs/INSTALL.md, docs/audio-engine.md, docs/FIELD_RENDERING_PIPELINE.md, docs/BATTLE_ANIMATION_PIPELINE.md, Tuist.swift, Project.swift, Workspace.swift, Sources/PokeExtractCLI/main.swift, ram.asm, main.asm, home.asm, maps.asm, text.asm.
What it can do
Play Pokémon Red/Blue games
User gameplay commands and interactions → Interactive Pokémon game experience
Run original Pokémon Red/Blue game logic
Game state and player actions → Authentic Pokémon gameplay mechanics
Display game graphics and interface
Game data and assets → Visual game interface in SwiftUI
Process turn-based battles
Battle commands and Pokémon data → Battle results and animations
Manage Pokémon inventory and stats
Player interactions with Pokémon → Updated Pokémon data and inventory state
Save and load game progress
Game state data → Persistent game saves
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.