-
Notifications
You must be signed in to change notification settings - Fork 6
Introduction
The Nintendo DS is the ideal handheld platform for developing homebrew applications. The barrier to entry is lower than that of the Xbox360 and iPhone/iPod Touch – there are no developer fees, no requirements to use a particular operating system or IDE, and no opaque approval process before your applications are available. Applications can be released quickly and frequently, and the sourcecode can be made public for crowdsourced bughunting and development. The potential audience for DS homebrew is considerably larger than that of the GP32/GP2X/Wiz/Pandora as there are far more DS consoles in circulation. The DS provides the potential for more intuitive and expressive applications than the PSP due to its touchscreen and dual displays.
However, the standard DS development kit includes no high-level support for writing applications. If you need to present a user with a button containing some arbitrary text that can respond to the stylus, you will need to:
- Write your own rectangle drawing routine that hits the framebuffer directly;
- Write your own string drawing routine that can position text within the button;
- Scan the touchscreen every vertical blank for collisions with your button.
The button is one of the simplest components of an interactive graphical user interface, yet even creating this most basic functionality represents an unwanted burden upon the developer. Writing user interfaces is therefore a tedious, lengthy chore, and applications that need them typically fall into one of two types:
- They are great programs with hideous, unintuitive interfaces;
- They have great interfaces but are hideous, unintuitive programs.
More often than not, homebrew applications are abandoned long before development has finished. The difficulty and tedium in creating a user interface is arguably one of the primary reasons for this.
Woopsi is intended to solve this problem. It is the first object-orientated graphical user interface framewrk for the DS. It may even have been the first OO GUI framework for a handheld console.
Woopsi has been specifically designed to enable developers to rapidly put together interfaces for their programs. It abstracts away the complexities of working with the DS hardware and provides a comprehensive set of UI components, bitmap manipulation and drawing tools and collection classes. It makes use of many features of the DS hardware, including its dual screens, touchscreen, gaming controls and DMA, to provide a fast, lightweight and cohesive user interface.