From WiiBrew
Jump to navigation Jump to search

Great idea, maybe a problem in the birthday data, the ones I got are not the ones stored in my wii. - Treps 15:43, 22 March 2009 (UTC)

Yeah right now the only thing you can rely on is the Name and creator. I think the month part of the birthday works usually. --Mjbauer95 17:00, 22 March 2009 (UTC)

Great Work

Great work, I've been looking for something like this for a long time. I wish you would've spread the link around wiibrew a little. I only found this by watching the recent changes page. Never fear, I'm placing this link everywhere I can on WiiBrew.--Arikado 15:51, 22 March 2009 (UTC)

Does the Month-birthday work for you?

It seems work usually but sometimes it seem to encounter problems --Mjbauer95 17:03, 22 March 2009 (UTC)

Error in example 0.1

I tried running the example, but it says: isfs://shared2/menu/FaceLib/RFL_DB.dat does not exist When I run FTPii I could see the file and it's 762KB. In my Mii Channel I have 35 Mii's, so I don't understand? --Crayon 19:02, 22 March 2009 (UTC)

And the file in FTPii is called "RFL_DB.dat"? It's hard for me to help you without having the same problem occur. --Mjbauer95 22:03, 22 March 2009 (UTC)
I have the same issue.. isfs://shared2/menu/FaceLib/RFL_DB.dat does not exist :( --Manny2008 23:34, 22 March 2009 (UTC)
I found the solution just delete the line ISFS_SU(); and it will work. I checked the example and I did not see this line: I added some extra validation, so here it is:
void loadMiis_Wii(){
	if (ISFS_Initialize() == 0){
            char * data;
            data = read(FACELIB_Wii);
            if (data!=NULL) loadMiis(data);

--Crayon 05:14, 23 March 2009 (UTC)

Not working in C++

I was having problem compiling the code in C++, so I added those lines in mii.h:

#ifndef MII_H
#define MII_H

#ifdef __cplusplus
   extern "C" {
#endif /* __cplusplus */

/* ..................... */

#ifdef __cplusplus
#endif /* __cplusplus */


--Crayon 03:52, 23 March 2009 (UTC)

Problem with Mii's name

First of all, you declare it like that:
char name[MII_NAME_LENGTH];
There is two mistake here, the first one is that characters are two bytes (addr: 0x02 through 0x15) so it should be:
char name[MII_NAME_LENGTH * 2];
The second one is there should always a place for the NULL character at the end, so it should be like this:
char name[MII_NAME_LENGTH * 2 + 1];
Now to accept UTF8 chars:

	int c, d;
	char tempChar;
	for (c=0, d=0;d<MII_NAME_LENGTH;c++, d++){
        tempChar = data[start + 0x02 + d * 2 + 1];
        if(tempChar < 0x80)
  [c] = tempChar;
  [c] = (((tempChar) >>  6) & 0x1F) | 0xC0;
  [c] = ((tempChar) & 0x3F) | 0x80;
	}[MII_NAME_LENGTH*2] = '\0';

The code has been tested just a bit with freetype in C++ with some Latin chars. So it needs more test, right now I'm too tired to continue ;)
The same problem applies to the creator name. --Crayon 06:32, 23 March 2009 (UTC)