← Back
ZallaxDev

ZallaxDev/pokeemerald-3Ds-dualscreen

Native Pokémon Emerald port for Nintendo 3DS, featuring dual-screen gameplay, stereoscopic 3D, and a fully 3D world.

View on GitHub ↗
Stars
87
Forks
2
Watchers
87
Open issues
0
Contributors
1
Language
C
License
Other
Default branch
main
Created Sep 26, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

Pokémon Emerald 3Ds Dual Screen

Pokémon Emerald 3Ds Dual Screen

Rediscover Hoenn. Two screens. A new perspective.
A native Nintendo 3DS port with a touch interface and an optional voxel overworld.

Download the latest release Follow @DustZallax on X Join the community on Discord Buy Zallax a coffee on Ko-fi

Screenshots   ·   Features   ·   Getting started   ·   Documentation   ·   Community   ·   Support the project


Pokémon Emerald 3Ds Dual Screen brings the adventure to Nintendo 3DS as native homebrew. The game runs on the top screen, while a dedicated touch interface on the bottom screen replaces the START menu. Enable the optional voxel overworld to explore supported areas from a new angle.

Screenshots

A look at the adventure across both screens.

Screenshot 1 Screenshot 2
Screenshot 3 Screenshot 4
View more screenshots · 9 more images
Screenshot 5 Screenshot 6
Screenshot 7 Screenshot 8
Screenshot 9 Screenshot 10
Screenshot 11 Screenshot 12
Screenshot 13

Features

What to expect
Native 3DS homebrew Runs directly on the console's ARM11 using libctru, Citro2D and Citro3D, without an emulator.
Two screens, one adventure The game on top, with a dedicated touch interface below in place of the START menu.
Optional voxel overworld Modelled buildings, trees, signposts and terrain relief, with adjustable camera angle and zoom.
Built from your own cartridge The builder generates the game data locally from your own dump. No ROM content is distributed.

A new perspective on Hoenn

The voxel overworld is off by default. Open OPTION on the bottom screen and enable VOXEL 3D, then adjust 3D ANGLE and 3D ZOOM to set your camera.

3D mode is a work in progress. Only some buildings, trees, signposts and terrain relief are modelled today. Most of the map and nearly all interiors are still shown flat. More areas will be modelled as the project moves forward.

Getting started

What you need

  • A Nintendo 3DS / 2DS family console with custom firmware (Luma3DS) and the Homebrew Launcher.
  • A clean dump of your own Pokémon Emerald (USA, Europe) cartridge.
  • Your console's SD card, connected to your computer.

Supported ROM SHA-1:

f3ae088181bf583e55daf962a92bb46f4f1d07b7

Install on Windows

  1. Download Emerald3DS-vX.Y.Z-Windows.zip from the latest release and extract the whole ZIP.
  2. Run Emerald3DS-Builder.exe, choose your ROM and your SD card, press Install.
  3. Make sure SD:/3ds/dspfirm.cdc is present for sound, put the SD card back in your console and launch Pokémon Emerald 3Ds Dual Screen from the Homebrew Launcher.

For the complete walkthrough, including sound setup and updates, see the installation guide.

The builder writes /3ds/emerald3ds/Emerald3DS.3dsx, Emerald3DS.smdh and emerald3ds.pak. The ROM is only read: it is not copied, uploaded or modified, and the builder needs no Internet connection.

Updating? Run the new release's builder again to generate a matching data pack. The game tells you if the pack does not match the release. Installing or updating does not overwrite your save.

Linux and macOS installation

Run the builder from source with Python 3.11+ and Pillow, using the payload/ folder from the matching release ZIP:

python -m emerald3ds_builder --payload /path/to/payload install --rom /path/to/rom.gba --sd /path/to/card

See the builder documentation for setup and additional commands.

About this repository

This repository contains no game content. It holds the port's own code, the tools that build it and the builder that turns your own cartridge dump into the game's data pack. Nothing derived from the ROM is distributed here or in the releases.

Component Location Role
Engine pret/pokeemerald · upstream.lock The Pokémon Emerald decompilation, pinned to a specific revision.
Port patches patches/pokeemerald/ The port's changes to the upstream engine.
3DS backend 3ds_port/ ARM11 backend, GPU compositor, NDSP audio, touch UI and voxel overworld.
Data builder builder/ Creates the data pack locally from the player's own supported ROM.

Building from source

python tools/bootstrap.py        # pinned upstream + patches + port -> build/upstream
python tools/bootstrap.py --make # also builds the 3DSX there

Start with the development guide for requirements, the development loop, loose data, data packs and host tests.

Documentation

Guide What's inside
Install and update Installation, sound setup and updating an existing installation.
Development Build requirements, workflow and tests.
Architecture How the engine and the 3DS backend fit together.
Asset pipeline How game data is prepared for the port.
Releasing Building and packaging a release.
Contributing Guidelines for contributing to the project.
Changelog Changes across releases.

Community

Join the Discord community to talk about the project and share your adventures in Hoenn. Follow @DustZallax on X for project updates and to stay in touch.

Join us on Discord

Support the project

If you're enjoying this new way to explore Hoenn, you can buy me a coffee on Ko-fi. It's an optional way to support my work on the project, and every coffee is appreciated. Thank you for being part of the adventure!

Buy Zallax a coffee — support on Ko-fi

You can also support the project by starring the repository, sharing it or contributing.


Provenance and licences

Only original Pokémon Emerald 3Ds Dual Screen code, tools and documentation are licensed by this project (LICENSE-PORT.md). The decompilation, the game and third-party components keep their own terms; see NOTICE.md and docs/PROVENANCE.md. AI-assisted tooling was used during development: AI_DISCLOSURE.md.

Pokémon Emerald 3Ds Dual Screen is an unofficial fan project, not affiliated with or endorsed by Nintendo, Game Freak, Creatures or The Pokémon Company. Pokémon and Pokémon Emerald are trademarks of their respective owners.