NDS Engine
[ Downloads | DevTools | Custom devtools | Changelog/Screenshots | Thanks ]
I'm currently working on a simple 3D engine for the Nintendo DS writen in C++ using DevkitPro and libnds.
This project goal is to write an all-around game engine. The game chosen to develop is a simple 3D snowboard game.
Download
- Version 0.3 - Creating a GUI system
- Version 0.03.1 2 3
- Version 0.03 2 3
- Version 0.2 - Just a 3D engine (space demo)
1 run on a real NDS and no$gba
2 Picking only work on a real NDS
3 Require dldi support(dldi patch) to work on a NDS
Dev Tools
This is a list of software used to develop the engine.
Cross-Compiler and tools:
- DevkitARM (GCC + Makefile templates)
Librarys:
Developpement Environment:
Content creation:
Custom dev tools
In the process to make this project I started building tools to "bake" the resources to minimize the loading at run-time and produce better textures.
- Gimp plugin that add new "save as" target for each type spported :
- Save image to NDS A3I5 (palletted, 8bit: 3bit alpha and 5bit index)
- Save image to NDS A5I3 (palletted, 8bit: 5bit alpha and 3bit index)
- Save image to NDS RGB16 (palletted, 4bit index - 16 colors)
- Save image to NDS RGB256 (palletted, 8bit index - 256 colors)
- Save image to NDS RGB (raw 15bit)
- Save image to NDS RGBA (raw 15bit + 1bit alpha)
Changelog
Version 0.03.1 (13 mars 2009):
- Added a message management system to make communication between systems easier
- Added code to make buttons work. Both with touch and D-Pad/A (using a technique a bit like GUI "tab order")
- Created nice transitions between the main menu and the credits page
- Created 3D models for a tree and a basic snowboarder
(warning: low-poly programmer art!)

Version 0.03 (5 mars 2009):
- Added interpolators for better scene animation management
- Fixed texture transparency bug
- Created graphics for the game and a basic menu animation
- Added support for all texture types exported from my gimp plugin (A3I5, A5I3, RGB16, RGB256, RGB, RGBA), this saves a lot of texture's video memory !
- TODO:
- make better font for buttons...
- create hookup method for the buttons

Version 0.02f (13 feb 2009):
- Added UI component (button with text)
- Changed texture loading method to use an embedded fs (NitroFS) instead of compiling the resources in the rom.
- Added support for A3I5 texture format, but more work on the alpha need to be done...
Version 0.02e:
- Added picking on the bottom 3D screen.
- Picking use a technique of second rendering (only drawing pickable objects) with a smaller viewport (4x4) around the clicked area.
- Added a new texture memory manager as the one in libnds does not permit removing a single texture (based on libnitro's code, but there is still a lot of work to be done)
- Started a UI system using 3D sub-system ( text on button is coming on the next iteration :D )

Picking example (with a cellular camera, sorry for the bad picture :D ):
Version 0.02d:
- Dual-3D mode, now both screens can be used to display a 3D scene

Version 0.02c:
- Added a splashcreen
- Refactoring:
- Extraction of the DS GL render to make it modular
- Extraction the scene management so we now can change the current scene
- Changed texture management so that a size can be specified to have different texture size depending on the need, this saved a LOT of video memory (it's extremely limited on the DS...)
- Better video memory managing (vbank assignments)

Version 0.02b:
- Textures on mesh now works :)

Version 0.02a:
- the engine use a simple scenegraph
- support for basic sounds and music based on the maxmod library
- Can use mesh exported from Blender

Thanks
Thanks to the DevkitPro team and community for the help and tools:
