• Stars
    star
    112
  • Rank 312,240 (Top 7 %)
  • Language
    C
  • Created over 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

3D engine for the Nintendo DS

Nitro Engine v0.9.1

Introduction

This is a 3D game engine, a lot of functions designed to simplify the process of making a 3D game. It isn't standalone, it needs libnds to work.

You may use Nitro Engine with both devkitPro installations, and with BlocksDS.

Features:

  • Support for static models, converted from OBJ files.
  • Support for animated models, thanks to the DSMA library, which converts MD5 models (with skeletal animation) into a format that can be rendered with hardware acceleration. It can also blend two animations together (for transitions).
  • Support for all format of textures (even compressed textures, but the converter included in this repository doesn't support them yet).
  • Dual 3D (render 3D to both screens, but at 30 FPS instead of 60 FPS).
  • Functions to render 2D images accelerated by 3D hardware.
  • Basic text system.
  • Basic GUI elements like buttons and scrollbars.
  • Basic physic system: Axis-aligned bounding boxes (AABB) only.

Nitro Engine doesn't support any of the 2D hardware of the DS. In order to use the 2D hardware you can use libnds directly, or you can use a library like NFlib. There is an example of how to integrate Nitro Engine and NFlib in the same project here.

Setup

devkitpro

  1. Clone this repository. Create a symbolic link to it inside the devkitPro folder in your system. For example, in Linux, create a symlink so that /opt/devkitpro/nitro-engine points to the folder with Nitro Engine:

    ln -sT /path/to/nitro-engine /opt/devkitpro/nitro-engine
  2. Go to the nitro-engine folder and type this on the terminal:

    make
    make NE_DEBUG=1

    This should build the library in both debug and release modes.

  3. If you want to check that everything is working as expected, open one of the folders of the examples and type make. That should build an .nds file that you can run on an emulator or real hardware.

BlocksDS

  1. Clone this repository and run:

    make -f Makefile.blocksds
    make -f Makefile.blocksds NE_DEBUG=1
    make -f Makefile.blocksds install

    This should build the library in both debug and release modes and install it.

  2. If you want to check that everything is working as expected, open one of the folders of the examples and run:

    make -f Makefile.blocksds

    That should build an .nds file that you can run on an emulator or real hardware.

Common

Note that some features of the 3D hardware aren't emulated by most emulators, so you may need to use an actual NDS to test some things. melonDS seems to emulate all features correctly. DeSmuME doesn't emulate the polygon/vertices count registers, so the touch test feature of Nitro Engine doesn't work.

Normally you should link your programs with -lNE, which is the release version of Nitro Engine. If you want to use the debug features of Nitro Engine, you should link with -lNE_debug, and add -DNE_DEBUG to the CFLAGS and CPPFLAGS in your Makefile. Make sure to clean and rebuild your project after doing the changes mentioned in this step. Check the error_handling example to see how to use the debug mode of Nitro Engine.

Screenshots

Screenshots of some of the examples included with Nitro Engine:

Animated model Box tower physics
animated_model box_tower
Hardware fog Specular material
fog specular_material
Screen effects 2D sprites
screen_effects sprites

Contact

This project is currently hosted on GitHub at:

https://github.com/AntonioND/nitro-engine

If you want to contact me (Antonio Niño Díaz) directly you can email me at:

antonio underscore nd at outlook dot com

License

The code of this repository is under the MIT license. The examples are under the CC0-1.0 license.

The full text of the licenses can be found under the licenses folder.

Future work

  • Asynchronous loading of assets.
  • Support for compressed textures.

Thanks to

More Repositories

1

ucity

The open-source city-building game for Game Boy Color.
Assembly
390
star
2

gbt-player

A music player library for the PSG audio channels of the GB, GBC and GBA.
C
266
star
3

giibiiadvance

A GB, GBC and GBA emulator with GB Camera support.
C
182
star
4

gba-switch-to-gbc

Routine to switch a GBA into GBC mode by software!
C
80
star
5

gbcam-rev-engineer

Tools used to reverse engineer the GB Camera using Arduino UNO.
C
78
star
6

ucity-advance

The open-source city-building game for Game Boy Advance.
C
58
star
7

libugba

Low level library to develop GBA games that can also be built for PC.
C
50
star
8

ugba-testing

Universal GBA Library that can target GBA hardware or PC
C
40
star
9

geometrix

A puzzle game for GB and GBC.
Assembly
29
star
10

back-to-color

Back to Color, a GBC demo for the GBDev 2014 compo.
Assembly
26
star
11

gba-bootstrap

Templates to start a GBA project with the bare minimum number of files
C
24
star
12

pong-3ds

A 3D pong game for 3DS with software rendering.
C
19
star
13

dsma-library

DS Model Animation Library
Python
12
star
14

umod-player

Music player of tracker songs for GBA
C
8
star
15

gbc-hw-tests

A lot of hardware tests for GB and GBC.
Assembly
8
star
16

palib-archive

Archive of versions of PAlib, a NDS development library
7
star
17

rpi3-arm-tf-bootstrap

DEPRECATED: Linux Bootstrap for Raspberry Pi 3 with Trusted Firmware-A
Assembly
7
star
18

microbit-fluid

Fluid simulation in a micro:bit using accelerometers and the LED matrix
Python
3
star
19

rlocus

Calculate the root locus of discrete and continous systems in a hp 50g
C
3
star
20

ugba-template

Template of how to integrate libugba in a project.
C
2
star
21

darwin-cuban-salsa

Python
1
star
22

antoniond.github.io

HTML
1
star
23

nds-rtt-example

Render to texture example for NDS
Makefile
1
star