BAGUI(WIP name) Developments

As mentioned here, I have started work on a new menu/front end/interface or whatever you wanna call it for the Supercard DS2. With this new menu, I hope to rectify the previous issues that plagued BAGPlug, starting with one of most noticable issues, performance.

With all the processing power available on the DS2, it is a wonder how anyone could hit any performance issues. However, these performance problems are the result of other factors that come into play when utilizing addon components to a system. Hopefully it has become well known of the bottlenecks that restrict the DS2 from its full potential, namely the slow transfer of data from the card itself to the DS system. The mere act of drawing on the DS screen itself can be a huge performance hit if not handled gracefully, let alone the even greater performance drop of updating both screens at once.If anyone has really observed BAGPlug in operation, you know that the bottom screen takes priority of updating while the top screen only updates when there is no user input after a short period of time. Both screens are never updated exactly at the same time in hopes of alleviating the DS2's limitation.

Regardless of such limitation, one of the biggest performance hogs in BAGPlug is the cover system itself. The cover system was setup to load a file's cover every time the top screen was updated, hence everytime the top screen was updated, there would be a bit of lag before the cover is displayed. Unfortunately, this cannot be improved. The slow cover loading is a result of either decompressing or the loading of the cover itself. One could minimize the lag simply by boosting the processor speed up, but at the cost of battery life.

NDS icon loading played a large roll in the sluggishness of the menu too. During the creation of BAGPlug, I had my sd card formatted to fat16 with 64k clusters not realizing it's drasticly greater performance over the use of smaller clusters. This gave me the impression that one could load nds icons on the fly, which turned out for the worse in the end due to unexpectedly slow fat reading.

Finally, BAGPlug was limited to 60 frames per second, meaning the other time that doesn't fall within 1/60th of a second is wasted sleeping instead of running the menu, which really didn't help overall.

All in all, these contributed to BAGPlug's poor performance.


So now for the things I have done differently in this menu project:

-First off, I have implemented a screen manager. The menu now only requests for screen updates and then updates when it is available to do so. If both screens are requested to update, then they are both updated in one transfer rather than updating each individually, thus minimizing the number of screen transfers required and lag overall.

-Second, the processor speed now changes dynamically based on performance. Every second, the menu checks its framerate and will overclock the processor to maintain a certain speed. If the framerate is consistant enough, it will underclock itself to the minimal level it can while maintaining its speed, thus balancing battery life and performance.

-Third, the framerate has now been boosted to 120 frames per second. This minimizes the amount of time wasted by sleeping. However, due to screen tearing, a slow screen transfer is required by the DSTwo. This slow transfer is only activated when a certain level of performance is hit, so if the program needs more power, it can switch to a fast transfer on the fly, then back again if necessary.

-Fourth, nds icons and file icons in general are now not used in the main menu display. Covers are now the standard, with only one cover loaded at a time, independent of bottom screen updating, to improve the file list scrolling performance.

With these improvements, this new menu is far more responsive and will offer a better experience than BAGPlug.
Perhaps I will release the current menu build for people to try out. It is not stable nor anywhere complete so it isn't very functional at this point in time, but may illustrate how effective these amendments are.

Comments

Thanks for taking the time to write this up. Even though I can't put this info to use, it was an interesting read.
 

Blog entry information

Author
BassAceGold
Views
239
Comments
2
Last update

More entries in Personal Blogs

More entries from BassAceGold

Share this entry

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://m.youtube.com/watch?v=SFpbRlIfowM&pp=ygUnQW5kIG5vIExpdHRsZSB0aW1teSBnbHVlZCB0byBoaXMgY3Jp...