Nitro Engine Versions Save

3D engine for the Nintendo DS

v0.12.0

2 months ago
  • Deprecate NE_ShadingEnable(). The name was misleading. All examples that use it have stopped calling it.
  • For sprites, add a way to specify texture coordinates inside the material to use a small part of the texture instead of the whole texture: NE_SpriteSetMaterialCanvas(). This is now used in the sprites example.
  • Stop using global variables in most examples. Instead, the rendering functions get values through the arguments of NE_ProcessArg() and NE_ProcessDualArg().
  • Don't expect palette objects when loading GRF files if the file doesn't contain a palette.
  • Allow loading BMFont fonts from RAM, not just nitroFS. Add an example of using rich text fonts from RAM.
  • Added a function to reset the rich text font system. Also add a function to return the size that a specific text string would have if drawn.
  • Add shadow volume example.
  • Build some functions that do lots of multiplications as ARM to increase performance.
  • Fix compilation with devkitARM.
  • Fix linker invocation for C++ with BlocksDS.
  • Update libDSF to version 0.1.2, with some speed improvements.
  • Relicensed libDSF under "Zlib OR MIT" to simplify licensing with Nitro Engine.
  • Some minor documentation improvements.

v0.11.0

2 months ago
  • Added a rich text system. This allows the user to draw non-monospaced text, and it's based on BMFont. An example has been added to show how to use it to render text. It can render text by using one quad per character, or by rendering to a texture which is then drawn as a single quad.
  • Fix "properties" typo. This involves renaming some functions, but compatibilty definitions have been added.
  • Update calls to GRF libnds functions after their prototypes have changed.
  • Cleanup setup of dual 3D modes that involve setting up 2D sprites to be used as a framebuffer.
  • Now the size of a sprite is set to the size of the material it is assigned. It can be modified later as usual.

v0.10.0

4 months ago
  • Create variants of NE_Process() and NE_ProcessDual() that can pass an argument to the screen draw callbacks.

  • Add function to load textures in GRF format (BlocksDS only).

  • Add functions to load compressed textures (Texel 4x4 format).

  • Add examples to load assets from the filesystem, both in binary and GRF function.

  • Cleanup code style: Use stdint types, turn some functions static inline...

  • Remove unneeded call to DC_FlushAll().

  • obj2dl: Improve error message. Fix vertical coordinates being flipped.

  • img2ds: Deprecate it except for generating DEPTHBMP binaries.

  • The makefile for BlocksDS now installs the tools to /opt/blockds/external, not only the library and headers.

  • Migrate all examples to using grit instead of img2ds.

v0.9.1

6 months ago
  • Update Makefiles to build on BlocksDS.

  • Fix functions used to load assets from FAT.

v0.9.0

7 months ago
  • Introduce two new dual 3D modes. They are resilient and they will always show the same output on both screens even if the framerate drops. This isn't the case with the previous dual 3D mode.

  • Fix 2D projection used to display 3D sprites. The Y coordinate didn't work correctly for numbers close to 192. This means that an ugly hack to apply an offset to the texture coordinates of 2D polygons is no longer needed.

  • Fix initialization of the library. Sometimes, depending on the loader, the game would start in a different time in the screen rendering cycle. This would swap the images of the screens until the framerate dropped when loading assets, for example.

  • The code that switches between screens in dual 3D mode has been more reliable. Nitro Engine now swaps screens after they are actually drawn, not in the vertical blanking interrupt handler, when it switched every frame even if no new frame had been drawn by the game.

  • Switch a lot of assert() in the library into permanent runtime checks. Several functions now return error codes instead of not returning any value.

  • Use safe DMA copy functions if the libnds of the toolchain provides them (they are only available in BlocksDS at the moment).

  • The library now supports sending display lists to the GPU in different ways to work around a hardware bug in the ARM9 DMA when it is set to GFX FIFO mode.

  • Fix debug build of the library.

  • Fix build of the NFlib template with devkitPro libraries.

  • Update examples and add some more, particularly about comparisons between dual 3D modes.

v0.8.2

1 year ago
  • Decouple mesh objects from model objects. This simplifies cloning models. Previously it was needed to preserve the original object as long as you wanted to use the clones. Now, it can be deleted and Nitro Engine won't free the mesh until all clones have been deleted.

  • Support vertex color commands in obj2dl. This can't be used at the same time as normals.

  • Improve examples. A script has been added to convert all assets used by the examples. Also, the NFlib example has been updated to work with upstream NFlib.

  • Support BlocksDS.

  • A few minor fixes.

v0.8.1

1 year ago

Important changes:

  • Add support for compressed textures.

  • Add example that combines NFlib and Nitro Engine to have good 2D hardware support.

  • Support specular properties in materials.

  • Add a few enums to help editor autocompletion features.

  • Rename a few functions and deprecate the old names (the old names still work).

Check the changelog for more information.

v0.8.0

1 year ago

Models and textures:

  • Add support for MD5 animated models (thanks to https://github.com/AntonioND/dsma-library): Introduce tool md5_to_dsma to convert them to a format that Nitro Engine can use.
  • Add support for OBJ static models: Introduce tool obj2dl to convert them to a format that Nitro Engine can use.
  • Introduce tool img2ds to convert images in many popular formats (PNG, JPG, BMP, etc) to DS textures (PNG is still recommended over other formats, as it supports alpha better than other formats).
  • Drop support for MD2 models (static or animated).
  • Remove NDS Model Exporter, Nitro Texture Converter, md2_to_bin and md2_to_nea. The animation system has been refactored (but NEA files don't work anymore, so you need to update your code anyway).

General:

  • Huge cleanup of code style of the codebase.
  • Cleanup of all examples. Add the original assets and textures used in all examples to the repository, along scripts to convert them to the formats used by Nitro Engine.
  • Implement a better way to have debug and release builds of the library.

Notes:

  • You can still use textures converted with Nitro Texture Converter or NDS Model Exporter, and you can still use any model exported with NDS Model Exporter or md2_to_bin. However, support for NEA files has been removed (it had awful performance, and it was just a bad way to do things), so any file converted by md2_to_nea won't work anymore.

  • The reason to replace most tools is that several people had issues building them. All the new tools are written in Python, so they don't need to be compiled.

v0.7.0

4 years ago
  • Major cleanup of code.
  • Clarify license.
  • Reworked tools to build under Linux and Windows.