Eidos

EIdos is a native PC port of Pokemon Black & White built on the aletheia decompilation, featuring a widescreen display and remastered battles.

README

eidos

A native PC port of Pokémon Black, built from the aletheia decompilation.

Discord

eidos is an unofficial fan project. It is not affiliated with or endorsed by Nintendo, Game Freak, Creatures Inc. or The Pokémon Company. It contains no game data: you need your own legally obtained copy of Pokémon Black or White. Pokémon and Nintendo DS are trademarks of their respective owners.

Download

Windows macOS Linux Android iOS

Click your system to download the launcher. It installs eidos and keeps it up to date. You need your own copy of Pokémon Black or White. The builds are not signed: on Windows, choose "More info" then "Run anyway"; on macOS (Apple silicon), open READ ME FIRST.txt in the disk image, which has the one Terminal line macOS needs before it opens the launcher; on Linux, make the AppImage executable and run it.

On Android (8 or later), install the APK and allow installs from that source when Android asks. On iPhone and iPad (iOS 15 or later), the IPA is not signed: install it with a sideloading tool such as AltStore or Sideloadly and your own Apple ID.

Status

eidos compiles the game's own decompiled C and runs it natively. It does not emulate the DS. It reads the game data from your own ROM; it ships no game data.

The game plays from the title screen into the opening hours: new game, the first battles, the field menu, saving and continuing. Crashes past that point are still expected. Each one is fixed in aletheia or here. Graphical issues and inconsistencies are to be expected, and multiplayer beyond syncing positions along with hosting and lobbies is still experimental.

  • One screen: the game in a single widescreen window, with its own interface for the field, menus and apps, or the two DS screens as on the console
  • Remaster battles: battles take place on the real map where you are, with the camera placed and checked by hand at about 150 places, and redrawn battle menus
  • 3D drawn on the GPU at a higher internal resolution, with fog, edge marking and anti-aliasing
  • Instant text, and fast forward: Tab for 2x, left Shift+Tab for as fast as the computer can
  • Keyboard and gamepad, remappable, and the port's settings inside the game's Options screen
  • 64-bit builds for Windows, macOS (Apple silicon) and Linux, and a launcher that installs, updates itself and manages your ROMs
  • A mod loader (docs/modding.md) and a spot editor for battle places (tools/spot-editor)

Milestones

  • Milestone 1: Portability
    • One 32-bit reference build, warning-free on GCC, Clang and MSVC
    • A 64-bit build (needs the 64-bit-ready source from aletheia)
  • Milestone 2: Platform layer (SDL3)
    • Window, keyboard, gamepads, touch screen with the mouse
    • Audio output and frame pacing at the DS's 59.83 Hz
    • The game's own boot and scheduler run every frame
  • Milestone 3: 2D engine
    • Backgrounds, sprites, affine layers, windows and blending
    • Both screens drawn from the hardware state the game writes
  • Milestone 4: 3D engine
    • Geometry engine, textures, models and maps
    • GPU renderer with fog, edge marking and anti-aliasing
    • Checked pixel for pixel against a real DS
  • Milestone 5: Audio
    • Sequencer, instruments, PCM, ADPCM and PSG channels
    • Music, sound effects and cries from the game's own sound calls
    • Checked against a real DS's output
  • Milestone 6: Data
    • First-run setup: pick your ROM, it is checked and extracted
    • File layer with mod overrides
    • Readable formats for the extracted data
  • Milestone 7: Gameplay
    • Field, battles, menus and saves in the opening hours
    • Fully playable from new game to credits
  • Milestone 8: Modding and enhancements
    • Higher internal resolution
    • Settings screen
    • One-screen widescreen layout and Remaster battles
    • Stable mod API and documented data formats
  • Milestone 9: Packaging
    • Windows, macOS and Linux builds, with a launcher
    • Android and iOS
  • Milestone 10: Pokémon White

Requirements

  • A checkout of aletheia next to this one, at the revision in docs/aletheia-pin.md
  • Your own dump of Pokémon Black (USA/Europe)
  • CMake 3.16 or later, Ninja, Python 3.11 or later
  • A 32-bit compiler: MinGW-w64 GCC (i686-w64-mingw32-gcc) or MSVC x86 (the 64-bit build needs more: docs/building.md)
  • SDL3 (python tools/fetch_sdl.py downloads it on Windows)

Building

cmake -S . -B build -G Ninja \
    -DCMAKE_TOOLCHAIN_FILE=cmake/ilp32-toolchain.cmake \
    -DALETHEIA_ROOT=../aletheia -DEIDOS_BOOT=ON -DEIDOS_OVERLAYS=ALL
cmake --build build --target eidos_boot
ctest --test-dir build

docs/building.md has every option, the other compilers and the 64-bit build.

Running

Start eidos_boot. The first time, a setup window asks for your ROM and extracts it. Saves go to %APPDATA%\eidos\saves on Windows.

DSKeyDSKey
D-padArrow keysSTARTReturn
AXBZ
XSYA
LQRE
SELECTRight ShiftTouchLeft mouse button

Tab: fast forward. Alt+Return: fullscreen. F12: screenshot.

Community

Join the Project Holon Discord for troubleshooting, bug reports, multiplayer matchmaking, and development updates.

Documentation

FileTopic
docs/architecture.mdHow eidos is put together, and how it uses aletheia
docs/runtime.mdFrame loop, scheduler, heap, platform layer, the boot
docs/engine-2d.mdThe 2D engine
docs/engine-3d.mdThe 3D engine
docs/audio.mdThe audio engine and the ARM7 sound driver
docs/files.mdFile layer, overlays, first-run extractor
docs/building.mdEvery build option, compiler and platform
docs/milestones-detail.mdThe milestones item by item, with evidence
docs/status.mdWhat is done and what is left
docs/unified-view.mdOne-screen composition rules: layers, canvas, input, placeholders
docs/unified-view-inventory.mdEvery screen and element, with its one-screen composition strategy
docs/unified-view-plan.mdImplementation order and tests for the one-screen view
docs/modding.mdMods

Legal

MIT (LICENSE). This repository contains no game data and no game source: it compiles the source from aletheia and reads data extracted from your own ROM. A release holds the built program and no game data. See LEGAL.md. Pokémon and Nintendo DS are trademarks of Nintendo; the game belongs to Nintendo, Creatures Inc. and GAME FREAK inc.