Wednesday, May 9, 2012

Moving Forwards

I finally posted the source code for the links browser with all my changes in the Friday the 13th blog entry.  Phew!  What a relief it is to get that done.

In the meantime, I've made some real progress on bunjalloo.  I read through all of the display code and consulted with some online docs about the NDS "main" and "sub" screens, their features, and operating modes.  Once I had it all marked up with comments, and thought I had a fair understanding of what was going on, I started making some changes to the code.

First I replaced all the occurrences of hard coded NDS screen sizes with SCREEN_WIDTH and SCREEN_HEIGHT.  Then I redefined those to match the Zipit screen size of 320x240, and tweaked the size of an opengl texture to accommodate the larger width.  This got me a double sized zipit screen display like this.
But I can only display the bottom "main" screen on the zipit so next I tweaked the SDLHandler.cpp code to use a single screen sized SetVideoMode() call, and tweaked the mouse button code to match the new screen size.  That gave me something like this, which should work on the zipit.
I really like the way bunjalloo can rotate the bottom toolbar around the screen to the right side as seen above.  It can also hide the toolbar so it doesn't obscure anything at all.  The scroll bar looks nice while using a minimal amount of screen real estate.  For comparison here's glinks displaying the same web site.  It's clearly more sophisticated than bunjalloo, but did they really have to make all the widgets so hideous?  Just look at that scroll bar.  It's the orthopedic shoe of scroll bar widgets.
I also double checked http:\\m.gmail.com to make sure I could still retrieve my gmail on the reduced zipit sized screen.  It's a bit slower than I'd like, but seems to work.
Unfortunately, in it's current form the bunjalloo code is still wasting considerable time and effort updating the video buffers for the "sub" screen even though it's no longer displayed.  This still needs work.  However, the (shared lib) bunjalloo executable is currently about 700K on x86 ubuntu (250K upxed).  That's significantly smaller than glinks, so I might just find a use for this when I'm all done.  Here's a roadmap of what I'm planning to do with it if all goes well.

  • Compile without the WAF (python) build system.  Done
  • Remove hardcoded NDS screen size numbers.  Done
  • Change the SDL screen size to fit zipit screen.  Done
  • Replace all opengl code (and unwanted libs) with one SDL Blit.  Done
  • Remove unused SDL_mixer audio code from SDLHandler.cpp  Done
  • Eliminate drawing to the emulated NDS upper "sub" screen.
  • Remove (ifdef?) "sub" screen datastructs, leaving only "main" screen code.
  • Fix SDL kbd code to use unicode field, and make it more responsive.
  • Add support for ENTER, BS, ESC keys from real kbd on kbd gui.
  • Add link navigation via tab, shift-tab, and enter keys instead of z2mouse.
  • Consider changing arrow keys (and others) to match glinks keybindings.
  • Create real makefiles in all source code directories.
  • Build on Zipit.
  • Optionally link bunjallo cache dir to /tmp/bunjalloo/cache for jffs.
  • Try to build it without libstdc++ (to reduce exe size).
  • Try other build options to reduce exe size for a better fit on the zipit jffs.

I've put the code onto my github site so you can see what's changed from the original sources.

Had another thought.  If I repackage my gmenu2x/gmu jffs distro to supplement retawq with bunjalloo I might get a better fit with a shared libstdc++ since I'll have 2 apps using it.  Something to think about...

No comments:

Post a Comment