Saturday, June 26, 2010

KDS Homebrew Menu v1.1b

Here there is my most recent homebrew application :) I must admit that not all the code is from mine, I only did the visible layer while the core of the software is excellently done by Chishm and Wintermute of Drunken Coders: it was previously mentioned on this blog's post http://kdshomebrew.blogspot.com/2010/06/ds-homebrew-menu-by-devkitpro.html, the homebrew loader with the ARGV protocol compatibility for an efficient use of the NitroFS.

So, what I have done is a frontend of the homebrew menu (or HBMenu in abbreviated mode), or better known as GUI ---Graphical User Interface---, and I called it KHBMenu, standing for KDS Homebrew Menu. If you look the figure of the cited post, everyone can see that the interface of the HBMenu is... "functional", minimal; so I decided to implement a nicer visualization, more in a kind of a menu of any flashcard for the DS, but with my own style I think :P the final result can be seen in the following figure
:


The main features of this frontend are decribed now in relation to the screens, where a soft and elegant ---I think :P--- presentation is offered in conjunction, offering a extended screen simulation taking advantage of the dual screens:
  • in the bottom screen it has displayed the actual folder DS homebrew file listing; it implies that KHBMenu tests if a *.nds file is a homebrew application or it's a commercial one, and rejects to show the last ones ---indeed, the Drunken Coders Homebrew Menu only loads homebrew but displays commercial ROMS, so I decided to filter them---.
  • in the top screen, the homebrew banner text of the selected homebrew application is displayed together with its associated icon, together with a DS symbol collage with the logos of Drunken Coders and KDS because the loader is their creation and they deserve to appear in the credits, I think.
  • Also, an icon miniature of every application is displayed in the bottom screen together with its filename.
  • KHBMenu also features two own icons meaning "folder" and "no icon" due to no banner description, for both banner information (top screen) and file information (bottom screen). 

The KHBmenu controls appear in two modes: DS buttons and touch screen:
  • the basic interaction with the frontend is by using the DS input controls:
    • the UP/DOWN cursor arrows navigate through the files; the selection of an item is highlighted by a grey bar together with a top screen banner update.
    • the 'L'/'R' buttons perform the previous and next page respectively, very useful when a folder contains too much files (KHBMenu displays 8 files and folders at a time);
    • the 'A' button is used to load a homebrew application or to enter to a folder ---depending on the selected item---;
    • the 'B' button forces a 'folder up' action, like the '..' pointer in a standard file system
    • the LEFT/RIGHT cursor arrows are only used when the homebrew application banner text is so long; KHBMenu displays the three lines of the banner but it's only 18 character width; LEFT and RIGHT arrows will shift the banner as a scroll bar to allow the visualization of the 'hidden' text.
  • The entire flashcard navigation and homebrew application loading can be handled from the touch screen because the navigation screen is the bottom one, so the tactile one; the following lines explain how the stylus is used:
    • some useful icons simulating the "folder up" and "prev/next page" when the folder contains so many files allows a comfortable navigation through a folder;
    • a "load" icon at the bottom right section of the bottom screen activates a homebrew application loading or a folder entering depending on the case. also, a double click is able to perform the "load" function instead of the icon; a single click is the same as a file selection with the cursors;
    • the banner scrolling is the only task impossible to do with the stylus, because it s located on the top screen, and it's not a tactile device.

The actual version of the KHBMenu is v1.1b (I'm not valiant to quit the beta qualifier because I'm not sure no visualization bugs will appear :P), and can be downloaded from here: http://sites.google.com/site/kdshomebrew/khbmenu_v11b.nds. I don't know if someone will enjoy this application, but I must admit that I feel happy to be capable to do something like KHBMenu, that includes some important implementation factors over NintendoDS
  1. a kind of nice user interface design;
  2. use of large (8x16 pixels) fonts; libnds offers support only to 8x8 pixel fonts;
  3. my first access to FAT using libnds;
  4. a research about how to find the banner text of a NDS file;
  5. how the icon is stored in a NDS file;
  6. how to paint pixels directly to the video graphics memory without using the framebuffer mode (that allows no bitmaps and tile maps); this is the method used to render the icons and its miniatures;

No comments:

Post a Comment