µLibrary

µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries (quite similar to OSLib).

The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi's island for example :)

µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project.

The problem of using the 3D GPU is clear: you can only use one screen at a time, or 2 screens but at 30 fps. However, µLibrary is fully compatible with PALib and you can use it to handle the second screen at 60 fps. It's a good solution if you do not plan to use the second screen intensively: displaying a BG with some sprites and get the stylus state could be enough, and you can concentrate on the main screen which is driven by µLibrary.

Here is a small list of functionalities offered by µLibrary:

Performance is good, one of the examples shows that an unoptimized C++ code that draws 400 balls bouncing on the screen uses less than 15% of CPU...

A few examples are supplied, as well as a Doxygen documentation and a small .chm documentation with a FAQ. There are also 2 templates for VHAM, Programmers Notepad or just make, one with PALib and one without it.

The render method is similar to a sheet of paper: you first draw a background, then put some mountains, then some trees, some characters and so on: you draw your objects in the order they should appear on the screen (the first is behind, the last one is over the others).

The doxygen documentation is available here

Some examples are directly downloadable there if you want to test them (please test them either on real DS or with no$gba):
Example01b.rar
Example09.rar

The source code is now included as part of the package

The official forum is located here.

17.04.09   |   µLibrary version 1.12
The latest version of µLibary. This update is only meant to make µLibrary still useable on the latest devKitPro / libnds release.
This time a lot of things changed in the libnds. But really a lot. Even the compiler doesn't accept things that it used to. This was the opportunity to update the samples. You will see a new icon, a cleaner makefile, an easier way to manipulate RAM files, etc. This also removes the warning screen when loading the .nds with no$gba.

23.08.08   |   µLibrary version 1.11
Update to µLibary. This version corrects a few bugs (namely the famous palette problems reported by some people). It is likely to be the "final" version, as it is really like I wanted it to be when I began this project.
Now, new ideas and things to change will be noted, and this will eventually make "µLibrary 2" if it's worth it.
However bugs, errors or missing things from this version will always be corrected, as well as eventual needed updates to run on the latest devkitpro release.
Thank you to all people who used the library, showed me their projects and helped me correcting the various bugs.

27.12.07   |   µLibrary version 1.10
Update to µLibrary. Includes examples, documentation and source code. This update is necessary in order to compile with the newest libnds build, but also won't run with the old one
Includes a Changes.txt file with a complete list of changes. Here are the most important changes:
- Added transformation functions to rotate, scale, etc. the screen as a whole.
- Improved loading of PNG files. You can now load PNG files with alpha channel to an alpha format (UL_PF_PAL5_A3 for example).
- Corrected bugs with fonts; included font2oft in the tools folder.
Edit: 1.10a fixes a bug with the transparent color when loading paletted PNGs. It also includes another sample.

14.07.07   |   µLibrary version 1.0 beta 4
An update to µLibrary, mainly because it didn't compile anymore with the latest libnds version (as usual...).
Includes a Changes.txt file with a list of changes.
- Added the ulDeleteMap function.
- Using bank B for textures wasn't working correctly; all my excuses!
- Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly.

18.04.07   |   µLibrary version 1.0 beta 3
Latest version of µLibrary. Includes examples, documentation and source code. This update is necessary in order to compile with the newest libnds build, but also won't run with the old one

07.04.07   |   µLibrary version 1.0 beta
Includes examples and documentation. And now also includes the source code!

25.03.07   |   Official µLibrary forum is open!
The official µLibrary forum, hosted by PlayerAdvance has just opened! Click on the news title to access it. This is an official forum and thus you can speak in english! You can go there and post if you've got any question or problem.

18.03.07   |   µLibrary version 1.0 beta
Includes examples and documentation. Does not include the source code yet.