Monday, July 12, 2010

Rearchitecturing the port for the future

The day for the big news has arrived!

Today I've finally completed integrating all the modules inside the new architecture. This new architecture has a lot of advantages over the previous one, to name a few:

  • The code is much easier to mantain now (it involves many less modifications to the original BennuGD source).
  • The interpreter (bgdi) can now be compiled without the modules you don't need, so it can be a lot smaller.
  • Up to where the endianess issues in BennuGD allow us, the DCBs generated with this new version are completely compatible with the official standard version.
  • This new version includes all the modules from the official Bennu version (minus mod_crypt).
  • Modules only get loaded when you import them (they were always loaded, which meant more unused RAM in a system without resources to waste).
  • Me messing around less with the code means a much more stable version.
  • This new architecture is much more friendly to others creating monolithic ports for other platforms.
And here is where I wanted to arrive; in some quick tests, this new version is extremely more stable: it fixes random crashes and misbehaviours of the previous versions whose origin I couldn't trace. Please understand that this new version has been completely rewritten in under a week -so there are still some bugs- but when bugs get fixed, this new version should be as solid as upstream BennuGD.

I'll comment on some particular examples; take a look at the screenshot below:

EEEEK! EEEEEK! HOOOOOOK!!! by Gabriel Garrote

In the latest build with the old architecture, the left eye appeared in the upper-left corner of the screen, for no particular reason. This works now just fine, as you can see from the screenshot above.

I'll probably "test" Pixbros later (and for "test", I mean play). Pixbros used to crash after a certain amount of playing time. I'm pretty confident it'll work just great now.

As for another example, Puzsion used to crash horribly when loading, so it was completely unplayable. As you can see from the screenshot below, it's now working perfectly.

Worked great until my Wiimote ran out of battery :'(

Also, speaking of better mantainability: I've been working with Daniel Franzini and we're now hosting a common code repository for both the Wii port and the PSP port (the new architecture is awesome :).
You can find the new code here, and this new repository superseeds the older one.

There are no released binaries yet because mod_wpad has not yet been integrated, but I'll probably dump the old code and start using Grisendo's mod_wpad, which is much more complete.

Anyway, don't take my word, as soon as I upload the new binaries, download & start using them, you'll see how much better they work compared to the previous version.

Hope you find the news interesting :)

Have fun!


Marcos said...

Hey, congratulations.

It seems is time for a field test: to provide fun while playing.

Anyway, any prospection on future works on some highly growing platforms for mobile devices, tablets and so on...? ;-)

Joseba García Etxebarria said...

I'm not the one who's going to do it, but and Android port should arrive in the following weeks.

I suppose that was your question :)