• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Engine] neo Engine — An NDS homebrew Pokémon Engine Written from Scratch

8
Posts
3
Years
    • Seen Apr 6, 2024
    Pokémon neo

    An experimental Pokémon engine for Nintendo DS. neo is written in C++ using devkitPro and libnds, the source code is available on GitHub.
    This engine is intended to be run on real hardware, but DeSmuME 0.9.11 and melonDS seem to be capable of emulating most of real hardware's features, too.

    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. Also, there is a short demo story that goes until the second badge in Dewford Town.


    Features

    Partially implemented features are in italics.

    • A status screen to display a Pokémon's status, 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
    • A working battle engine including
      • Single and double trainer battles
      • Wild Pokémon battles
      • Switch Pokémon, use moves, use items, use held items
      • Move effects, item effects, ability effects
    • A fully working bag (using adapted graphics from ORAS)
    • Maps (32x32 block maps, using AdvanceMap's (v1.92) *.map, *.bvd format; tile sets and palettes need to be converted) including
      • Events (using a completely new map event / map script engine)
      • Wild Pokémon encounters
      • Animated map tiles (hard coded)
      • Player sprite, animated moving, surfing, cycling, and fishing
      • PKMN following the player
      • Warps
      • Weather and other overlays (flash, sandstorm, etc)
      • Field moves
      • PokéRadar, Bikes, etc
    • BGM and SFX
      • An in-game jukebox
      • Compatibility with DS-era music (.sseq)
    • 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 save games
      • Saving the progress to the micro SD (only works on flash cards)
      • Saving the progress to flash memory (only works in emulators)
    • A clean UI
    • Dynamic difficulty
      • Wild Pokémon's levels scale with the story progression
      • Adjust the difficulty anytime via the Options.
    • Support for multiple save files
    • Full support for multiple languages (currently, all strings are available in English, and most also in German)
      • A Braille font is available.
      • Kana are supported font-wise, getting Kana text for story content still requires some work.


    Screenshots

    Screenshots are available on GitHub.

    Releases

    Compiled versions and the source code for the latest release (v1.0-alpha) are available on GitHub. (Considering that these are not retail ROMs but written and compiled from scratch, it is hopefully OK to post links to them.)
    • PNEO.nds — Intended for emulators, no special developer features enabled
    • PNEO_DESQUID.nds — Intended for emulators, special developer menu on SELECT, "walk through walls" on R
    • PNEO_DESQUID_FLASH.nds — Intended for flashcards, no special developer features enabled

    The above ROMs can be compiled from the source code using make.


    Known Issues

    • On real hardware, (by now very rarely) the engine will hang when loading an asset (GFX or BGM) from the file system.
    • The overlay for forest clouds (in Petalburg Woods) flickers while running.
     
    Last edited:
    83
    Posts
    3
    Years
  • Since nobody mentioned it, I'll be the first to say... This looks INSANELY GREAT. This could bring so much more life to the fangame/rom hack scene. I think that what I'm trying to say it's, great job!
     

    WolfPP

    Spriter/ Pixel Artist
    1,309
    Posts
    5
    Years
  • I love the bag <3 It will have gen 4 graphics too (about OWs and tileset)?
    Also, is that walking pokémon the same than HGSS or you just added custom phrases when the player interacts with pokémon?

    Anyway, amazing job! I really love it!
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    I love the bag <3

    That's nice to hear ^^.

    It will have gen 4 graphics too (about OWs and tileset)?
    If you mean real gen 4 graphics (i.e. 3D maps, etc); then the engine currently does not support this (however this might get implemented later.)

    If you mean the gen 4-like tilesets that are used in some gen 3 ROM-hacks (i.e. up to 16 palettes with 15+1 colors each, up to 512 blocks per block set, etc); these should just work. (While it is somewhat time-intensive, it is rather easy to convert tileset graphics from a gba game/hack to use them in the neo engine.) The same is true for maps from gba games. (Although the engine currently does not use the gen 3 typical "connections" to load connecting maps, but a system more similar to the gen 4 games.)


    Regarding OW sprites, there is nothing fundamentally too different between the sprites of gen 3 and gen 4, so the latter should just work.

    Also, is that walking pokémon the same than HGSS or you just added custom phrases when the player interacts with pokémon?

    Currently, the "walking/follow pkmn" mechanic is rather simple: The pkmn sprite will just follow the player sprite. In particular, interacting with the pkmn is just not possible (yet), so there are just no phrases. However, when these phrases will be added, it will probably result in a system similar to that of HGSS.
     
    12
    Posts
    3
    Years
    • Seen Feb 15, 2023
    Great Job! This could be a better alternative to the already amazing CFRU. I'll be looking forward to this
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    Currently, the "walking/follow pkmn" mechanic is rather simple: The pkmn sprite will just follow the player sprite. In particular, interacting with the pkmn is just not possible (yet), so there are just no phrases. However, when these phrases will be added, it will probably result in a system similar to that of HGSS.

    Just a quick update: It is now possible to interact with the walking pkmn. (There are, however, still no special phrases for locations, weather, or for special pkmn)
    Spoiler:
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    I wonder if someone hack HGSS to get all officials phrases with their correct emotions...

    Well, I'd like to know as well… Currently, I'm using data extracted by playing HGSS, which is rather … sub-optimal.
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    As it's been some time, some updates. First, updated builds can be found on the GitHub releases page (1.0-alpha).

    Change log:

    Sound engine
    • Switched to SSEQ/SWAR/SBNK for BGM playback, rework BGM
    • Added BGM fading on BGM swap

    Map engine
    • Significantly reduced lag when loading maps
    • Reduced lag in general
    • Added Dive, Fly
    • Added reflective tiles (water, ice)
    • Implemented berries and time-dependent events
    • Added scriptable warps
    • Added map scripts that are activated by a pkmn move
    • Added PokéRadar
    • Added fishing in sand
    • Added fog, rain
    • Added tile exit animations (traces in water/sand); Fortree bridge anim, Pacifidlog log anim
    • Allow for interaction with the following PKMN
    • Add day-care couple and PKMN breeding

    PKMN Status Screen:
    • Added ribbons / contest status screen
    • Added ribbon details screen

    Demo Story
    • Added indoor / cave maps
    • Added Sealed Chamber / Golems

    General
    • Fixed Flashcard boot problems
    • Added Spinda spots
    • Added PKMN color variations based on PId
    • Update OW / NavApp Map
    • Added Braille support
     

    immacksg

    follow @immacksg on twitter for some rad cartoon a
    71
    Posts
    10
    Years
  • Wow! This is the first I'm seeing of this and it looks absolutely incredible! I'd really love to see where this goes!
     

    Anvils Alive

    Fun is infinite. Sega Enterprises.
    190
    Posts
    10
    Years
  • Wow, Pokémon development on the DS has come really far! Once this engine is finished, maybe it could be edited so you can make your own neo Engine games!

    Looking forward to how this pans out.
     

    PerceptioN95

    ポケモントレーナ とみい
    36
    Posts
    6
    Years
    • Seen Nov 11, 2023
    Would be awesome if you could follow the tileset of the 3rd gen games 1:1.
     

    CocoaAlpaca

    south park elementary's gym leader
    27
    Posts
    5
    Years
  • will this run on twilight menu ? id love to try it out but i haven't had a ds for several years, just my 3ds. :/
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    Wow, Pokémon development on the DS has come really far! Once this engine is finished, maybe it could be edited so you can make your own neo Engine games!

    Looking forward to how this pans out.

    Indeed, that was the original plan. Currently, there is already a preliminary map editor around (https://github.com/neo-engine/sachi) that can be used to edit the maps (including tiles, palettes, encounters, events, etc); editing scripts and trainers is still slightly painful at the moment though. However, the plan definitely is to make it reasonably easy to create your own derivative games, preferably without even having to recompile the source files.

    will this run on twilight menu ? id love to try it out but i haven't had a ds for several years, just my 3ds. :/

    Recently, there were some troubles with Twilight, but they are about to be fixed. You can run a version (albeit without sound) smoothly today (use the "NOSOUND" build here: https://github.com/neo-engine/neo/releases/tag/1.0.2-alpha); a build with fixed sound should arrive soonish.

    Would be awesome if you could follow the tileset of the 3rd gen games 1:1.

    Thanks for the suggestion! The tileset format used is backward compatible, that is, you could just plug in the tilesets from the gen 3 games and they will work. In fact, you would just need to replace the tileset files in the file system—perhaps I will offer the vanilla tile sets as a drop in replacement some time in the future.
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    Version 1.0 is now available here: https://github.com/neo-engine/neo/releases/tag/1.0. Starting from this version, save games created will be forward compatible.
    A detailed list of additions follows.

    Map engine:
    • Reduced lag
    • Added Berry Blender, Pokéblock Case
    • Added EV training mechanism (infinity cave)
    • Added Slateport Battle Tent (Battle Factory light)
    • Added in-game trades
    • Added initial Wonder Card support and very basic online gift download functionality (currently allows for downloads of gifts from localhost and in DESQUID-builds only)
    • Fixed BGM fading (hopefully)
    Dex:
    • Added toggle for different forms
    • Added habitat viewer
    Battle engine:
    • Added A_ILLUSION and A_DISGUISE
    Demo Story:
    • Added support for different story routes
    • Fully playable up to Badge 3 (on default story route)
    • Slateport: added PKMN Fan Club, Battle Tent, Name Rater, Market, Seashore House
    • Mauville: added Gym, Wally battle
    • Verdanturf: added Friendship Checker, Rusturf Tunnel scripts
    • Routes 104 - 111: added Trainer
    • Lilycove: added Contest Lobby
    • Added PKMN League (currently not reachable via normal gameplay)
    General:
    • Ate some squids, had some fun
    Some screen shots (more are available here: https://github.com/neo-engine/neo/tree/main/PNEO/Screens)

    Spoiler: Image


    As an extra, I'll add a large version of the new background used on the bottom screen.

    Spoiler: Image
     
    1
    Posts
    91
    Days
    • they/them
    • Seen Feb 16, 2024
    Extremely interested in this project 👀 made an account here just to keep an eye on this specifically. I do have a few questions though.
    1. There's a bazillion in-game screenshots, and they all look really good (besides the sand & ash weather ones), but are there any screenshots of the editor / user interface? Did I just miss them? It does… have a UI, right? Or is it just a bunch of files you have to compile? I read the github readme and it was… a bit too inside-baseball to understand what's going on. I mean, that's probably fine, it'll just be a steep learning curve I guess.
    2. Will it work on linux?
    3. I noticed that some of the tilesets were different than regular RSE, is that some sort of contrast-lowering screen effect? Or is there a legal reason that they had to be modified?
     
    8
    Posts
    3
    Years
    • Seen Apr 6, 2024
    Extremely interested in this project 👀 made an account here just to keep an eye on this specifically. I do have a few questions though.
    1. There's a bazillion in-game screenshots, and they all look really good (besides the sand & ash weather ones), but are there any screenshots of the editor / user interface? Did I just miss them? It does… have a UI, right? Or is it just a bunch of files you have to compile? I read the github readme and it was… a bit too inside-baseball to understand what's going on. I mean, that's probably fine, it'll just be a steep learning curve I guess.
    2. Will it work on linux?
    3. I noticed that some of the tilesets were different than regular RSE, is that some sort of contrast-lowering screen effect? Or is there a legal reason that they had to be modified?

    Let me try to answer your questions.

    For 1. There are two levels of editing the game. First, you can edit maps, game data, etc, by editing the data in the file system of the ROM (FSROOT), which you can extract using tools such as ndstool. (after editing, ndstool is then needed again to bundle the updated FSROOT with the ROM). In some sense, this approach is similar to binary hacking of the GBA games.
    Second, if you want to modify more of the game itself (say to the map engine, battle engine, or to implement new features, etc), you would have to edit the source code of the game (after which you would have to recompile the game). This approach is very similar to working with a decompiled GBA ROM and requires very similar tooling. (The difference being of course that you are not working with code obtained via reverse engineering, but with the actual game code itself.)

    Specifically for the data in the FSROOT, there are some tools that make editing things somewhat easier.
    • There is an editor for the maps, tilesets, and trainer data (https://github.com/neo-engine/sachi); specifically, said editor can be used to easily modify the data of the FSROOT folder (that is, the data which is to be included as the file system of the ROM). There are no compiled binaries for the editor, you would have to compile it first.
    • Most of the actual "data" data (such as move names, Pokémon stats, text, etc.) is stored in csv files in https://github.com/neo-engine/fsdata, which are then compiled (using tools from that repo) into specific formats used by the game and stored at appropriate places in the FSROOT. For instance, "data/strings/mapstrings.csv" contains the strings used in the overworld, "data/strings/strings.csv" contains strings used in the user interface of the game.
    • Most of the sprites and other graphics assets can be compiled using the tools in https://github.com/neo-engine/gfxdata. To be on the safe side, this repository does not include any actual graphics data; but as long as you are fine with the sprites provided per default in the FSROOT, this is not a big issue. (Of course, you can also collect the required files from around the Internet; the Makefile is a good indicator of what kind of files are needed; a proper documentation for this part will also follow at some point.)
    • Finally, for editing some graphics data (e.g. the aforementioned images for the sandstorm and ash weather conditions, as well as the in-game UI, etc.), there is unfortunately no very user-friendly editor yet. This means that you would first need to extract the corresponding images from the FSROOT, then use a tool from https://github.com/neo-engine/helper-scripts to turn the ".raw" file back into a ".png"; edit the png with your program of choice, and then do all of these steps in reverse.

    For 2. All programs mentioned above work on Linux and Mac OS (but they typically require you to compile them first). It should also be possible to set up the toolchains to work with Windows; but I haven't tried to do so for a long time. The game itself is a classical .nds ROM, so it runs on most NDS emulators (as well as, you know, an actual NDS; depending on how you want to play on real hardware, you might need to build the game with different compilation-time parameters.)

    For 3. Some part of the contrast-lowering is due to the fact that the palettes change based on the in-game time; the screenshots were taken when the in-game time was set to "dusk". However in general, the palettes are crafted to be more in line with the colors of the remakes. As mentioned before, the palettes and tilesets can be changed using the map editor.
     
    Back
    Top