description said:Made using the PSPSDK API, I figured "Hey, since all these menus take up SO MUCH damn RAM, and there's not very much of it, why not make the menuing in ONE well-written module and let the rest derive from it?". Well, that thought lingered for a few days and I started coding it, and it seems totally plausible.
Aiming for total code-correctness in terms of commenting and such(Hehe, OpenBSD) this project will hopefully be used. I intend to release several sample modules(ie music) that use the menu to give a base off of what it will be like.
What would it be done? Using imports/exports, all one would have to do is include the stubs and such, have a couple pre-made functions in the module, and use menus without using the pspdebug library or anything like it. Reason being is that all the data contained in it takes up a lot of ram and spread out between 3-4 modules it just doesn't work.
Also I will be coding a config file(I got good at parsing) so that won't be a problem.
Will be released under a bsd license(Probably will dual license it, source under GPL, headers under BSD or something) so anything using it won't be limited to open source. For now it's entirely under a BSD license though.
Basically, to sum it up, I got really annoyed coding menu after menu after menu, I figure "heh, I'll just code one and via exports I can have ONE menu with a bunch of entries from different modules". Uses the debug, though I wanted to use Wildc*rd, however from what I understand their source isn't for general use(education only) and I don't want to infringe on that.
So, it uses the debug library right now, to maintain a small impact on the ever-important heart - the kernel area.
How it works: A module included it's stubs, uses the headers, and calls to a function that links it with the rest of the entries(Does not add ANY extra memory at any point in time) using a nice pointer thing(root structure->next->next->next etc) that uses pointers for everything except the settings. If you want to actually look at how it works, source is in the tarball.
As of today it features a whole dealio of things, including scrolling(in case the amount of entries is more than the screen), callback(async, sync, paused, etc), descriptions, uses pointers to load text so you can change whatever at any given point in time in terms of whats stored on the module that's using it, highlight colors, and more.
If you want to look at it to get a better idea, download it. Ohloh says it's "Extremely well-commented", so I'd take that as a complement.
So rather than babbling on what is done, I'll tell you what isn't:
Config file
Exports(Easy)
Various callback options
Download(07-25-09):
http://openmenupsp.googlecode.com/files/openmenu_072509.tar.gz
Googlecode page:
http://openmenupsp.googlecode.com