Woopsi is a Nintendo DS GUI library for rapidly creating user interfaces for homebrew software. Modelled after the AmigaOS windowing system.

Release notes:

Woopsi 0.99.2 is now out. Grab it from SourceForge, as usual:


The font system has had some minor changes made. I finally got around to ripping out the Font and MonoFont classes, as the PackedFont classes perform the same job with far more efficiency. They’ve been moved to the “extras” directory in the SVN repository in case anyone should ever need a reference for creating new font classes.

All of the monochrome fonts that ship as part of the library are now PackedFont1 classes instead of PackedFont16. This highlighted a bug in the bmp2font .NET program that is included in Woopsi’s “tools” directory – it was allocating relatively huge bitmaps for the font data instead of the tiny bitmaps that were really necessary. I’ve deleted the “CourierMono” font as it was an exact duplicate of the “Courier” font. The GlyphFont is a PackedFont16-based class instead of a Font-based class.

This changes have reduced Woopsi’s footprint quite significantly:

1.5MB from the size of the Woopsi library;
2MB from the sourcecode;
400K from the packedfont example ROM;
60K from the helloworld example ROM.
A big saving for very little work.

Other changes include replacing the x, y, width and height members of the Gadget class with an instance of the Rect class (itself converted from a struct). A lot of the clipping work can now done be within the rect instance rather than throughout the codebase.

The FileListBox and FileRequester classes include a getPath() method that allows a developer to determine which directory the file requester is pointing at.

– Replaced clipping code in Gadget::clipRectToHierarchy() with call to new
Rect functions.
– PackedFont16::renderChar() aborts correctly if there is nothing to render
– Bitmap::getData(x, y) no longer declared inline (Lakedaemon).
– Renamed gunsuh15.bmp and gunsuhche15.bmp to gungsuh15.bmp and
gungsuhche15.bmp respectively.
– Deleted CourierMono as it was an exact duplicate of Courier.