This is just a preview of a HomeMenu C++ class I'll be releasing soon. It's graphics library independent, so there aren't too many hassles there. It also allows you to associate your own functions to events such as when the menu opens, closes, redraws.
30 March 2009 -- I'll be busy for the next few weeks so I won't be able to work on HomeMenu much. Since a few people have contacted me about getting the source I thought I'd release it early. The source is still for the incomplete preview, but a full v1 release shouldn't be too far away.
MetaFight 23:15, 30 March 2009 (UTC)
Since I'm too lazy to code a proper demo application I'm releasing the preview on top of Shiny Red Tank.
It's coming along well, but some of the stuff isn't implemented yet. It still needs:
Sound support for all those warm *bloomph* roll-over sounds. Rumble support to make you feel like you're manhandling your wii.
- Accurate reflection of wiimotes' battery levels.
- Wiimote syncing and configuration like in commercial menu. This is a LONG way down the road.
- Hotspot activation animations/sounds.
- Confirmation dialog.
- Improved callback interface.
I'm debating converting this all to C. If you feel this is a good/bad move, please leave a comment on the discussion page.
Currently, when the menu pops up, it takes a screenshot of whatever is on the screen and then uses GX to render everything it needs. Since I don't know much about GX yet, I can't tell if this approach will interfere with other graphics libraries. I know it runs fine with libwiisprite, but I'm not sure, yet, how it will fare with GRRLIB or handrolled graphics solutions. My advice: only call the menu immediately after having drawn.
Similar issues will present themselves with sound. The menu will (eventually) stop any sound playback when it is opened. I haven't poked around ASND much yet, so I don't know if there is a way to save a channel's state and then eventually restore it. My current advice: make use of the callbacks (before menu is shown, after menu closes) to backup/restore your sound data manually. Another option of for me to just pause ASND and not include sound in the menu.
Thirdly, I haven't looked into this much yet either, but wiimote settings (resolution, mode) are set when the menu is shown. If there is no way for me to programmatically find what the previous values are I won't be able to restore them when the menu is closed. My advice: use the callbacks to save/restore wiimote settings before and after showing the menu.
30 March 2009
- Sourcecode released (Google Code SVN).
22 March 2009, preview
- Not yet complete, but you can get the idea.