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

Release notes:

Version 0.41 is now available.

This version contains the usual set of bugfixes, optimisations and new test projects. The SDL compatibility layer has been greatly improved in this release – I compiled a quick test for the GP2X F-200 and it now runs at the same speed as the DS version.

New features are limited to some more graphics functions. It is now possible to draw bitmaps in greyscale, and convert a region of a bitmap to greyscale.

Downloads available from SourceForge:


– Fixes:
– Removed Gadget::unregisterChildrenFromVBL() declaration from gadget.h as the function does not exist.
– Graphics::dim() draws to correct dimensions.
– GraphicsPort::dim() clips properly.
– BitmapButton::getPreferredDimensions() returns the correct size.
– AnimButton::getPreferredDimensions() returns the correct size.
– Anim button animation continues playing correctly when clicked if disabled.
– ListBox::getPreferredDimensions() returns the correct size.
– ListBox::draw() clips more effectively.
– Removed getEditableData() bodge from bitmap classes; all interaction with bitmap data happens through bitmap methods.
– Moved IK bitmaps out of demo folder/NDS into animbutton test.
– ScrollingListBox::getPreferredDimensions() returns the correct size.
– SliderHorizontal and SliderVertical produce correct values when they are showing a range of values large enough for the grip to be artificially enlarged.
– Scrollbar buttons scroll by amount based on max/min values and height of slider rather than arbitrary value.
– Removed ScrollbarVertical and ScrollbarHorizontal setButtonScrollAmount().
– AnimButton animations pause when the button is disabled.
– DMA copying function uses DMA for RAM->VRAM copies.

– New Features:
– SDL framebuffer code merged into FrameBuffer class.
– Added label test.
– Added button test.
– Added DOS batch files to build examples and tests.
– Added grayScale() function to GraphicsUnclipped, Graphics and GraphicsPort.
– BitmapButton greys out when disabled.
– Added bitmapbutton test.
– Added drawBitmapGreyScale() function to GraphicsUnclipped, Graphics and GraphicsPort.
– AnimButton greys out when disabled.
– Added animbutton test.
– Added listbox test.
– ListBox greys out when disabled.
– Added scrollinglistbox test.