An experimental Pokémon engine for Nintendo DS. For demonstration purposes only, currently neo includes some (updated) maps from Pokémon Emerald, as well as images from other mainline Pokémon games. These are not part of neo.
Consult the compatibilty section for more or less up-to-date information on supported hardware and emulators.
Partially implemented features are in italics.
-
A working Pokémon engine (at 60fps), including
- A status view for single Pokémon as well as the player's party, including detailed information about the Pokémon's moves and ribbons
- Gen 1 - Gen 5 Sprites (Pokémon Black 2 / White 2 Versions)
- Spinda support
- Gen 6 - Gen 8 Sprites (Smogon XY Sprite Project, Smogon Sun/Moon Sprite Project, Smogon Sword/Shied Sprite Project)
- Slight color variations of Pokémon based on their PV.
- An in-game Pokémon storage system
- A working PokéDex, listing for each Pokémon
- A flavor text
- Types, simplified base stats, height, and weight
- Different forms, if any
- Locations where (and when) the Pokémon can be found in-game
- A working battle engine including
- Single and double trainer battles
- Multi trainer battles
- Wild Pokémon battles
- Switch Pokémon, use moves, use items
- Move effects, item effects, ability effects
- Move animations
- A fully working bag
- A working map engine (for now only GBA-style maps are supported) including
- Events, Warps
- Wild Pokémon encounters
- Pokémon Trainers challenging the player
- Animated map tiles, changing tiles based on story progress
- Player sprite, animated moving, surfing, cycling, and fishing
- PKMN following the player
- Weather and other overlays (flash, sandstorm, etc)
- Field moves such as Surf, Waterfall, Rock Climb, Cut, Strength, Fly, Dive, etc
- Currently unsupported field moves: Whirlpool, Defog
- Mach Bike, Acro Bike, Fishing Rods, PokéRadar, Escape Rope, Honey
- BGM and SFX including
- An in-game jukebox
- Compatibility with official NDS game music (using
.sseq
,.sbnk
, and.swar
files for BGM playback).
- A real time clock
- Overworld changes based on time (map palette akin to DNS)
- Different wild Pokémon encounters based on time.
- Map events based on day time
- Support for (multiple) save games
- Saving the progress to the micro SD (works only on flash cards)
- Saving the progress to flash memory (works only in emulators)
- Support for communication with “the originals”
- Playing with / importing a save from a GBA version
- Link trading with Gen IV and Gen V games
- A clean UI
- Dynamic difficulty
- Wild Pokémon's levels scale with the story progression
- Adjust the difficulty anytime via the Options.
- Full support for multiple languages (English, German)
- Kana are supported font-wise, getting Kana text for story content still requires some work.
- A status view for single Pokémon as well as the player's party, including detailed information about the Pokémon's moves and ribbons
-
Easy-to-understand and ready-to-(re)use code
- Strict and intuitive naming conventions
- Documentation
-
devkitARM ≥ r57
-
libnds ≥ 1.8.2
-
libfilesystem ≥ 0.9.14
-
libfat-nds ≥ 1.1.5
-
dswifi ≥ 0.4.2 (currently unused)
-
gcc/g++ ≥ 11.2 (for ndstool)
-
make
Having installed the above tools, neo can be built with a single make
command.
See the section below for optional compilation parameters.
The main data for the maps, 'mons, etc, is stored in the separate perm2-FSROOT
repository; some data can be configured and build via tools and csv
files found in the
perm2-fsdata
repository.
Further helper scripts to convert images and other data can be found in the perm2-helper
repository.
All of the following parameter can be specified as environment variables or as parameters to make; the exact (non-empty) value of a variable is unused.
DESQUID
Enable desquid mode. Adds a desquid menu to the party screen, allowing for an easy way to edit and/or test Pokémon. Also adds a global dequid menu toSELECT
; shows the current location and other desquid output onL
, and enables a walk-through-walls mode while pressingR
.NOSOUND
Disable all sound output.FLASHCARD
Optimize for flashcards. Usesargv
parameters to write save game files (instead of writing directly to CARD memory). Typically,FLASHCARD
builds cannot create/load save games in an emulator.VANILLA
Use default ndstool shipped with devkitPro to bundle the nds binary.NOSOUNDFADE
Disable fade-out/fade-in when switching BGM. No longer needed.
In general, neo tries to be compatible with most emulators and flashcards. Below, there is a list of known compatibility issues for select emulators. Feel free to open an issue if neo does not run on your emulator or hardware, but you think it should.
Emulator/HW | Status | Notes |
---|---|---|
NooDS | OK | |
melonDS | OK, minor slowdowns | |
Delta | OK, minor slowdowns | (uses/same as melonDS) |
desmume | OK, minor slowdowns | unstable with BGM turned on |
woodR4 | OK, sound effects broken | compile with FLASHCARD=1 |
nds-bootstrap | OK, sound effects broken | compile with FLASHCARD=1 VANILLA=1 |
More screenshots are available in the Screens
subdirectory.