Skip to content
/ neo Public

A homebrew Pokémon nds game; written from scratch using libnds and devkitPro

License

Notifications You must be signed in to change notification settings

neo-engine/neo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pokémon neo

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.

Features

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
    • 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.
  • Easy-to-understand and ready-to-(re)use code

    • Strict and intuitive naming conventions
    • Documentation

Build requirements

  • 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.

Compilation Parameters

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 to SELECT; shows the current location and other desquid output on L, and enables a walk-through-walls mode while pressing R.
  • NOSOUND Disable all sound output.
  • FLASHCARD Optimize for flashcards. Uses argv 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.

Compatibility

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

Screenshots

More screenshots are available in the Screens subdirectory.

General gameplay

Pokémon status screens

The storage system

The Bag

The PokéDex

Battles
Wild Pokémon battles

Trainer battles

Miscellaneous

About

A homebrew Pokémon nds game; written from scratch using libnds and devkitPro

Topics

Resources

License

Stars

Watchers

Forks

Languages