Difference between revisions of "HomeMenu"

From WiiBrew
Jump to navigation Jump to search
m
 
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Infobox homebrewapp
+
{{Infobox development tools
| title      = [[HomeMenu]] [[Image:HomeMenu-screenshot.png|center|thumb|180px]]
+
| title      = [[HomeMenu]]
| desc        = A standalone Home Menu
+
| image      = [[File:HomeMenu-screenshot.png|180px]]
| type        = Library
+
| type        = library
 
| license    = None yet
 
| license    = None yet
 
| author      = [[User:MetaFight|MetaFight]]
 
| author      = [[User:MetaFight|MetaFight]]
 
| version    = None yet
 
| version    = None yet
| download    = [[Media:HomeMenuPreview.rar|Demo application]] <br /> (based on [[Shiny Red Tank]])
+
| example    = Media:HomeMenuPreview.rar
| source      = [http://code.google.com/p/libhomemenu/ Google Code Download]
+
| source      = http://code.google.com/p/libhomemenu
 
}}
 
}}
  
Line 14: Line 14:
 
It's coming along well but isn't completed yet.  An up-to-date "To Do" list can be found on the [http://code.google.com/p/libhomemenu/ SVN].
 
It's coming along well but isn't completed yet.  An up-to-date "To Do" list can be found on the [http://code.google.com/p/libhomemenu/ SVN].
  
==News==
+
== News ==
 
{{Archive box
 
{{Archive box
|[[/Archive 1]]}}
+
|[[/Archive 1|Archive 1]]}}
'''11 April 2009''' -- I just tested HomeMenu with a fresh extraction of the libwiisprite tarball... it wasn't pretty. I hadn't noticed just how drastic my modifications to lws were. I'll be updating [[HomeMenu]] to work with lws out of the box in a week or so. I'll also implement some more GX related tweaking options so hand rolled graphics solutions can better control [[HomeMenu]]'s behavior.
+
'''11 April 2009''' -- I just tested HomeMenu with a fresh extraction of the libwiisprite tarball... it wasn't pretty. I hadn't noticed just how drastic my modifications to lws were. I'll be updating [[HomeMenu]] to work with lws out of the box in a week or so. I'll also implement some more GX related tweaking options so hand rolled graphics solutions can better control [[HomeMenu]]'s behavior.
  
 
Back to coding in a week,
 
Back to coding in a week,
Line 24: Line 24:
  
  
'''4 April 2009''' -- I'm looking for testers. I've gotten reports of odd behavior on PAL systems, so first and foremost I'm looking for PAL testers. I also need widescreen testers (both PAL and NTSC). If you're interested please leave your contact info on the [[Talk:HomeMenu#Testers|discussion]] page. I'll also put together a version of the menu that will allow you to take screenshots.
+
'''4 April 2009''' -- I'm looking for testers. I've gotten reports of odd behavior on PAL systems, so first and foremost I'm looking for PAL testers. I also need widescreen testers (both PAL and NTSC). If you're interested please leave your contact info on the [[Talk:HomeMenu#Testers|discussion]] page. I'll also put together a version of the menu that will allow you to take screenshots.
  
 
Thanks,
 
Thanks,
Line 31: Line 31:
  
  
''For older news please refer to the archives.''
+
''(For older news please refer to the archives.)''
  
==Installation and usage==
+
== Installation and usage ==
===Installation===
+
See [[HomeMenu|/HomeMenu/]][[/Installation and usage|Installation and usage]].
# Copy all the .c and .h files into your project (make sure the .c are accessible as ''source''s and .h accessible as ''include''s).
 
# Add <code>#include "HomeMenu.h"</code> where appropriate.
 
# Add <code>-lasnd -lwiiuse</code> to your MakeFile's <code>LIBS :=</code> line.
 
  
===Usage===
+
== Statistics ==
# Call <code>HomeMenu_Init()</code> to set things up.  Its parameters are:
+
I'd like to have a general idea of how many apps use this library (once released, or even off the svn). If you use it, could you please add <code><nowiki>[[</nowiki>[[:Category:Homebrew using HomeMenu]]<nowiki>]]</nowiki></code> to your application's wiki page? Thanks.
#* <code>int screenWidth</code> -- horizontal resolution of screen.
 
#* <code>int screenHeight</code> -- vertical resolution of screen.
 
#* <code>void* framebuffer0</code> -- pointer to the first framebuffer.
 
#* <code>void* framebuffer1</code> -- pointer to the second framebuffer (Currently assumes double-buffering).
 
#* <code>u8 framebufferIndex</code> -- index to last buffer drawn to [0, 1].
 
# Specify graphics library with <code>HomeMenu_SetGFX()</code>.  Accepted values are:
 
#* <code>HM_GFX_GRRLIB</code>
 
#* <code>HM_GFX_LIBWIISPRITE</code>
 
#* <code>HM_GFX_FAILSAFE</code> (which currently draws nothing).
 
# Specify sound library with <code>HomeMenu_SetSND()</code>.  Accepted values are:
 
#* <code>HM_SND_ASND</code>
 
#* <code>HM_SND_SDL</code> (not yet implemented)
 
#* <code>HM_SND_NOSOUND</code>.
 
# When you want to display the menu (when the user presses HOME), simply call <code>HomeMenu_Show()</code>.  In order for [[HomeMenu]] to be able to take a screenshot (used as the menu background) <code>HomeMenu_Show()</code> must be called ''before'' flushing the framebuffer.
 
  
'''Tip:'''  If you have a callback set up for when the user holds down on the wiimote's powerbutton, add <code>HomeMenu_Hide()</code> to this callback to tell HomeMenu to relinquish its control of the main thread.
+
== Feedback / Support ==
  
'''Tip:'''  If your application relies on a timer, consider using the <code>HomeMenu_SetAfterHideMenu(yourCallback)</code> callback setter.  This will allow you to update your timer (if necessary) before resuming your application.
+
Feedback would be greatly appreciated. You can find me in #wiidev and #wiidevot on EFNet, you can email me at the address listed in the game, or you can use the [[Talk:HomeMenu|discussion]] page.
  
====Libwiisprite users====
+
If you'd like to contribute to the project, please contact me and we'll see what can be arranged.<br />
Currently, the pointers to the framebuffers and the framebuffer index are stored in the <code>GameWindow</code> object as <code>private</code> members.  [[Shiny Red Tank]] got around this problem by adding accessors to the <code>GameWindow</code> class.  Hopefully, if there is enough demand, the accessors will be included in the next version of LWS (go ask!).  Here are my modifications:
+
<!--If you'd like to contribute to the project but you're not sure in what capacity, please consider the option posted on my [[User:MetaFight#Support_/_Donations|User page]].-->
  
{| class="wikitable collapsible collapsed" width="61.8%"
+
== Release log ==
|-
 
! Changes to GameWindow.h
 
|-
 
|<source lang=cpp>
 
/*** Add the following lines in the public section ***/
 
 
 
//!Get a pointer to one of the framebuffers
 
//!\return a pointer to desired framebuffer, or NULL if index is out of bounds.
 
void* GetFrameBuffer(u32 index);
 
//!Gets the index of the current framebuffer.
 
//!\return value of index of current framebuffer.
 
u32 GetFrameBufferIndex();
 
</source>
 
|}
 
 
 
{| class="wikitable collapsible collapsed" width="61.8%"
 
|-
 
! Changes to GameWindow.cpp
 
|-
 
|<source lang=cpp>
 
/*** Add the following lines within the namespace wsp block ***/
 
 
 
void* GameWindow::GetFrameBuffer(u32 index) {
 
if (index > 1 || index < 0)
 
return NULL;
 
else
 
return _frameBuffer[index];
 
}
 
 
 
u32 GameWindow::GetFrameBufferIndex() {
 
return _fb;
 
}
 
</source>
 
|}
 
 
 
====GRRLIB 4.0.0 users====
 
I think the same problem (as mentioned above) applies to you guys.  Here are the accessors I used during my testing.
 
 
 
{| class="wikitable collapsible collapsed" width="61.8%"
 
|-
 
! Changes to GRRLIB.h
 
|-
 
|<source lang=c>
 
void* GetFrameBuffer(u32 index);
 
int GetFrameBufferIndex();
 
</source>
 
|}
 
 
 
{| class="wikitable collapsible collapsed" width="61.8%"
 
|-
 
! Changes to GRRLIB.c
 
|-
 
|<source lang=c>
 
/**
 
* Get a pointer to one of the framebuffers.
 
* @param index specifies which framebuffer to retrieve.
 
*/
 
void* GetFrameBuffer(u32 index) {
 
return xfb[index];
 
}
 
/**
 
* Get the index of the current framebuffer.
 
*/
 
int GetFrameBufferIndex() {
 
return fb;
 
}
 
</source>
 
|}
 
 
 
==Statistics==
 
I'd like to have a general idea of how many apps use this library (once released, or even off the svn).  If you use it, could you please add <code><nowiki>[[</nowiki>[[:Category:Homebrew using HomeMenu]]<nowiki>]]</nowiki></code> to your application's wiki page?  Thanks.
 
 
 
==Release log==
 
 
'''30 March 2009'''
 
'''30 March 2009'''
* Sourcecode released (Google Code SVN).
+
* Source code released (Google Code SVN).
 
* Updated preview (Now with rumble and some sound).
 
* Updated preview (Now with rumble and some sound).
  
Line 144: Line 54:
 
* Not yet complete, but you can get the idea.
 
* Not yet complete, but you can get the idea.
  
==Thanks==
+
== Thanks ==
 
* Thanks go to the folks at [irc://irc.efnet.net/grrlib #grrlib].
 
* Thanks go to the folks at [irc://irc.efnet.net/grrlib #grrlib].
 
* Thanks go to the madness at [irc://irc.efnet.net/wiidevot #wiidevot].
 
* Thanks go to the madness at [irc://irc.efnet.net/wiidevot #wiidevot].
Line 150: Line 60:
 
* Thanks to [[User:drmr|drmr]] for his [[Wii Homebrew Cursors]].
 
* Thanks to [[User:drmr|drmr]] for his [[Wii Homebrew Cursors]].
  
==See Also==
+
== See Also ==
 
* [[:Category:Homebrew using HomeMenu|Homebrew using HomeMenu]]
 
* [[:Category:Homebrew using HomeMenu|Homebrew using HomeMenu]]
  
 
[[Category:Libraries]]
 
[[Category:Libraries]]
 +
[[Category:HOME Button Libraries]]

Latest revision as of 16:06, 16 August 2010

HomeMenu
HomeMenu-screenshot.png
General
Author(s)MetaFight
TypeLibrary
VersionNone yet
Links
Example
Source

HomeMenu is a library written in C which provides a Big-N style Home Menu. It aims to be graphics-library-independent so it can be used regardless of your application's underlying graphics code/library. It also allows you to associate your own functions to events such as when the menu opens, closes, redraws.

It's coming along well but isn't completed yet. An up-to-date "To Do" list can be found on the SVN.

News

11 April 2009 -- I just tested HomeMenu with a fresh extraction of the libwiisprite tarball... it wasn't pretty. I hadn't noticed just how drastic my modifications to lws were. I'll be updating HomeMenu to work with lws out of the box in a week or so. I'll also implement some more GX related tweaking options so hand rolled graphics solutions can better control HomeMenu's behavior.

Back to coding in a week,

MetaFight 06:20, 11 April 2009 (UTC)


4 April 2009 -- I'm looking for testers. I've gotten reports of odd behavior on PAL systems, so first and foremost I'm looking for PAL testers. I also need widescreen testers (both PAL and NTSC). If you're interested please leave your contact info on the discussion page. I'll also put together a version of the menu that will allow you to take screenshots.

Thanks,

MetaFight 19:01, 4 April 2009 (UTC)


(For older news please refer to the archives.)

Installation and usage

See /HomeMenu/Installation and usage.

Statistics

I'd like to have a general idea of how many apps use this library (once released, or even off the svn). If you use it, could you please add [[Category:Homebrew using HomeMenu]] to your application's wiki page? Thanks.

Feedback / Support

Feedback would be greatly appreciated. You can find me in #wiidev and #wiidevot on EFNet, you can email me at the address listed in the game, or you can use the discussion page.

If you'd like to contribute to the project, please contact me and we'll see what can be arranged.

Release log

30 March 2009

  • Source code released (Google Code SVN).
  • Updated preview (Now with rumble and some sound).

22 March 2009, preview

  • Not yet complete, but you can get the idea.

Thanks

See Also