Hacking WiiFlow Lite

dishe

Well-Known Member
Member
Joined
Apr 11, 2018
Messages
134
Trophies
0
Age
44
XP
231
Country
United States
Can I make a feature request? Or maybe ask the hive mind here if anyone has a better workaround for the following:
Right now I use the favorites feature to hide what I don't want to display on the flow. For example, I have a "games" source in which NAND titles are mixed in with Wii, homebrew and emulator plugins, but I only want the games to show up in the games flow, so I click favorite on the wiiware and virtual console titles, skipping things I don't want like shop channel and mii channel, etc, and then click the star to show favorites only (and click to remember the favorites state in settings).
The problem is, whenever I add something new, like a new video to the USB storage, I have to not only refresh cache so it shows up, I have to remember to also favorite it (which means turning off show favorites, find the new titles, add them as favorites, go back to show favorites only). I don't want or need favorites on the video player flow, only for games to filter out the non-game titles. But I understand it is a global parameter that effects all sources in the menu.

Possible solutions could be:
1) Have favorites enabled/disabled per source menu option instead of globally.
2) A way to hide unwanted titles as opposed to showing only what I DO want. That way any new addition would be shown by default instead of the other way around.
3) A way to implicitly select what is contained in a source. I would imagine this could work similarly to the way the source menu is defined in the ini file, except instead of telling it to display all items of a particular file type or source, the specific titles could be listed. Example: [Source=NAND, Title=JAAE] for super mario world virtual console, followed by a comma and then the next entry, [Source=Wii, Title="RMCP01"] for Mario Kart, etc, for anything you want to appear in that menu. I know that we can currently make a source menu option that jumps directly to launching a title if selected using the autoboot line (and I use this to add Netflix to my source menu), but I don't think I've seen any way to implicitly list what could be contained within it instead of autoboot. The advantage of doing it this way is that we can have different titles show up in different sources- for example, games in NAND could could included with Games, and Netflix could appear in Video, rather than have ALL nand sources in one flow or the other. If that makes sense.
4) Categories? I'm not sure if this would do me any good, I did see there was a way to tag titles for different categories but I feel like I'd be in the position as I started in, having to manually go in and tag every new title I add to the library.
 

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
Can I make a feature request? Or maybe ask the hive mind here if anyone has a better workaround for the following:
Right now I use the favorites feature to hide what I don't want to display on the flow. For example, I have a "games" source in which NAND titles are mixed in with Wii, homebrew and emulator plugins, but I only want the games to show up in the games flow, so I click favorite on the wiiware and virtual console titles, skipping things I don't want like shop channel and mii channel, etc, and then click the star to show favorites only (and click to remember the favorites state in settings).
The problem is, whenever I add something new, like a new video to the USB storage, I have to not only refresh cache so it shows up, I have to remember to also favorite it (which means turning off show favorites, find the new titles, add them as favorites, go back to show favorites only). I don't want or need favorites on the video player flow, only for games to filter out the non-game titles. But I understand it is a global parameter that effects all sources in the menu.

Possible solutions could be:
1) Have favorites enabled/disabled per source menu option instead of globally.
2) A way to hide unwanted titles as opposed to showing only what I DO want. That way any new addition would be shown by default instead of the other way around.
3) A way to implicitly select what is contained in a source. I would imagine this could work similarly to the way the source menu is defined in the ini file, except instead of telling it to display all items of a particular file type or source, the specific titles could be listed. Example: [Source=NAND, Title=JAAE] for super mario world virtual console, followed by a comma and then the next entry, [Source=Wii, Title="RMCP01"] for Mario Kart, etc, for anything you want to appear in that menu. I know that we can currently make a source menu option that jumps directly to launching a title if selected using the autoboot line (and I use this to add Netflix to my source menu), but I don't think I've seen any way to implicitly list what could be contained within it instead of autoboot. The advantage of doing it this way is that we can have different titles show up in different sources- for example, games in NAND could could included with Games, and Netflix could appear in Video, rather than have ALL nand sources in one flow or the other. If that makes sense.
4) Categories? I'm not sure if this would do me any good, I did see there was a way to tag titles for different categories but I feel like I'd be in the position as I started in, having to manually go in and tag every new title I add to the library.
you're forgetting about categories. to hide games you would create a category named hidden. then mark that category as hidden (with a 'x'). then go thru your game list and add games to that category. then they won't show unless you goto categories menu and clear the 'x' from that category (the hidden category).

here's more from the wiki - https://sites.google.com/site/wiiflowiki4/categories
in wiiflow lite its called categories_lite.ini not categories_v4.ini
 
Last edited by fledge68,
  • Like
Reactions: Hakaisha

dishe

Well-Known Member
Member
Joined
Apr 11, 2018
Messages
134
Trophies
0
Age
44
XP
231
Country
United States
you're forgetting about categories. to hide games you would create a category named hidden. then mark that category as hidden (with a 'x'). then go thru your game list and add games to that category. then they won't show unless you goto categories menu and clear the 'x' from that category (the hidden category).

here's more from the wiki - https://sites.google.com/site/wiiflowiki4/categories
in wiiflow lite its called categories_lite.ini not categories_v4.ini

Ok, cool, I had a feeling I just didn't understand how that works. :)
But this won't allow me to have an entry appear in one flow and not another, right? I suppose I should RTFM before asking more dumb questions. LOL
 

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
Ok, cool, I had a feeling I just didn't understand how that works. :)
But this won't allow me to have an entry appear in one flow and not another, right? I suppose I should RTFM before asking more dumb questions. LOL
to make games appear with one source button and not others. put certain games in say category 2 and other games in category 3. then add the line 'category=2' to one source btn and 'category=3' for the other source btn. the source btns are in source_menu.ini

edit: an example. make a souce btn for mario games and a source btn for sonic games. then make category 2 called mario and add all your mario games. make category 3 called sonic games and add all your sonic games. in source_menu.ini under the mario btn add the line 'category=2' and under the sonic btn add the line 'category=3'.

so when you click on mario btn it auto selects category 2 and clicking the sonic button auto selects category 3. of course each source btn will have to have magic numbers set (seperated by commas) for each console source.
 
Last edited by fledge68,
  • Like
Reactions: Hakaisha

kaisersozeh

Well-Known Member
Member
Joined
Mar 21, 2018
Messages
260
Trophies
0
Location
Phobos
XP
1,054
Country
Antarctica
Im just putting together an animation now, i can repurpose the work for some test images for checking load times against inage size...be later on.
@fledge68 as you were looking at scaling anyway, what are the chances of reducing the image to a quarter or half the original display size?
It has to be the best way to increase the pixel depth/ decrease pixel size without increasing memory usage.
Thanks for your efforts. Appreciated

Sent from my GT-I9195 using Tapatalk
 

dishe

Well-Known Member
Member
Joined
Apr 11, 2018
Messages
134
Trophies
0
Age
44
XP
231
Country
United States
to make games appear with one source button and not others. put certain games in say category 2 and other games in category 3. then add the line 'category=2' to one source btn and 'category=3' for the other source btn. the source btns are in source_menu.ini

edit: an example. make a souce btn for mario games and a source btn for sonic games. then make category 2 called mario and add all your mario games. make category 3 called sonic games and add all your sonic games. in source_menu.ini under the mario btn add the line 'category=2' and under the sonic btn add the line 'category=3'.

so when you click on mario btn it auto selects category 2 and clicking the sonic button auto selects category 3. of course each source btn will have to have magic numbers set (seperated by commas) for each console source.
Wow. That makes a lot of sense. I love it when there's already a solution to what I wanted to do! THANK YOU SO MUCH!
So if this new version that pulls loading graphics off storage really starts up just as quickly as the old version with baked-in loading graphics (or at least, without a noticeable difference, as @Hakaisha implied), I think the software might be danged near PERFECT!
 
  • Like
Reactions: fledge68

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
Im just putting together an animation now, i can repurpose the work for some test images for checking load times against inage size...be later on.
@fledge68 as you were looking at scaling anyway, what are the chances of reducing the image to a quarter or half the original display size?
It has to be the best way to increase the pixel depth/ decrease pixel size without increasing memory usage.
Thanks for your efforts. Appreciated

Sent from my GT-I9195 using Tapatalk
so you are saying make small images but in wiiflow multiply the width and height by 2 to stretch them and make them bigger?
 
  • Like
Reactions: kaisersozeh

dishe

Well-Known Member
Member
Joined
Apr 11, 2018
Messages
134
Trophies
0
Age
44
XP
231
Country
United States
Im just putting together an animation now, i can repurpose the work for some test images for checking load times against inage size...be later on.
@fledge68 as you were looking at scaling anyway, what are the chances of reducing the image to a quarter or half the original display size?
It has to be the best way to increase the pixel depth/ decrease pixel size without increasing memory usage.
Thanks for your efforts. Appreciated

Sent from my GT-I9195 using Tapatalk

Curious to know your findings re: loading times. My wife actually has the car with the wii I'm working on embedded in it today, so I haven't had time to try any of this yet.

--------------------- MERGED ---------------------------

Assuming this all works well, should we start a thread for users to share custom loading animations? :)
 

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
Curious to know your findings re: loading times. My wife actually has the car with the wii I'm working on embedded in it today, so I haven't had time to try any of this yet.
as for making the loading images appear sooner - the main problem is wiiflow has to init the video and get the IOS or cIOS that it will use before mounting the SD card and USB drive needed to load the images and display them. and getting the IOS or cIOS means checking the args for an IOS arg to use then loading and checking the wiiflow save file to see which IOS to use and then switching to that IOS to finally mount all devices.

so in the long run I could maybe right after the video init add a single splash screen image or text message like Get Ready! but it would have to be compiled into wiiflow lite code.
 

kaisersozeh

Well-Known Member
Member
Joined
Mar 21, 2018
Messages
260
Trophies
0
Location
Phobos
XP
1,054
Country
Antarctica
so you are saying make small images but in wiiflow multiply the width and height by 2 to stretch them and make them bigger?
The opposite - I'm suggesting as you're adjusting a 4:3 image for a 16:9 screen you could look at making the whole display smaller - the quality issue is regarding the size of the pixels - we reduce the pixel size and the percieved "quality" is improved.
So a pixel from a 640x480 image takes up how many pixels on a 1920 1080 tv? - It may be possible to reproduce images at 1:1, using the same scaling technique used to adjust 4:3 to 16:9 - albeit not at full screen!
EDIT - allowing for the wii's hardware, obvs - 720?

--------------------- MERGED ---------------------------

Curious to know your findings re: loading times. My wife actually has the car with the wii I'm working on embedded in it today, so I haven't had time to try any of this yet.

--------------------- MERGED ---------------------------

Assuming this all works well, should we start a thread for users to share custom loading animations? :)
Do it man! :D

EDIT#2
if the folder specified in the meta.xml contained further folders - could wiiflow then select one of the containing folders at random?
My thought is a variety lots of little animations - loading up one is quicker than a heavier, more beautiful animation, but seeing the same one is repetiitive.
This putting arguments in the meta xml is very interesting....

Just in terms of something loading very very quickly - when doing a bit ofresearching I saw some animations where the whole frames had been rendered as text - like a photo to ascii art filter
If wiiflow could render a page of text, display it for 40ms, then render the next and so on - that would be very low on memory and instantaneous to render.
It could look very good, and small enough to have many animations embedded in the code - needs work but doable.
 
Last edited by kaisersozeh,

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
The opposite - I'm suggesting as you're adjusting a 4:3 image for a 16:9 screen you could look at making the whole display smaller - the quality issue is regarding the size of the pixels - we reduce the pixel size and the percieved "quality" is improved.
So a pixel from a 640x480 image takes up how many pixels on a 1920 1080 tv? - It may be possible to reproduce images at 1:1, using the same scaling technique used to adjust 4:3 to 16:9 - albeit not at full screen!
EDIT - allowing for the wii's hardware, obvs - 720?

--------------------- MERGED ---------------------------


Do it man! :D
your pixel idea is beyond me. i get it but don't have the know how. all i do know is when the wii is set to widescreen both usb loader gx and wiiflow read the wiis config file to see its set on and then all they do is multiply the width of an image by .80 or .75 to squish the width so when your tv stretches it it doesn't display stretched or they use a gu scaling option to change the scale X size when drawing the image for display.

as for the thread - heres one already - https://gbatemp.net/threads/changing-wiiflow-boot-animation.330880/

click the first spoiler to see the ideas people had back then
 

kaisersozeh

Well-Known Member
Member
Joined
Mar 21, 2018
Messages
260
Trophies
0
Location
Phobos
XP
1,054
Country
Antarctica
your pixel idea is beyond me. i get it but don't have the know how. all i do know is when the wii is set to widescreen both usb loader gx and wiiflow read the wiis config file to see its set on and then all they do is multiply the width of an image by .80 or .75 to squish the width so when your tv stretches it it doesn't display stretched or they use a gu scaling option to change the scale X size when drawing the image for display.

as for the thread - heres one already - https://gbatemp.net/threads/changing-wiiflow-boot-animation.330880/

click the first spoiler to see the ideas people had back then
I'm familiar with that thread - I was going to share some of the stuff off it as images in folders for use with your latest update.

Really simply - @fledge68 - can you make the picture displayed on the screen smaller?
 

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
I'm familiar with that thread - I was going to share some of the stuff off it as images in folders for use with your latest update.

Really simply - @fledge68 - can you make the picture displayed on the screen smaller?
you can always multiply the width and height by .5 to make it half the size but then how do you make your tv display it bigger?
 
  • Like
Reactions: kaisersozeh

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
You don't - that's the idea. Where is this - can you change the location of the "display"?
so you want to make a big image and have wiiflow shrink it down? ok so ya that might make it display better but maybe not. look at the banners - full screen the look good but shrunk down in the upper right corner not so hot. and even further that big image would take up a lot more memory than a small one. changing its size does not change the memory it uses.
 
  • Like
Reactions: Hakaisha

Hakaisha

Well-Known Member
Member
Joined
Sep 17, 2014
Messages
236
Trophies
0
XP
1,456
Country
United States
Could possibly experiment with using different transformation filters within your image editing programs to get the best quality down-size, making your image smaller within the 200x100 boundaries of your canvas, using an alpha transparency channel; thus giving the illusion of smaller, higher resolution image akin to what is possible on modern hardware.

The one I was working on earlier today looked really crisp, without any apparent jags or pixelation.
 
  • Like
Reactions: kaisersozeh

kaisersozeh

Well-Known Member
Member
Joined
Mar 21, 2018
Messages
260
Trophies
0
Location
Phobos
XP
1,054
Country
Antarctica
so you want to make a big image and have wiiflow shrink it down? ok so ya that might make it display better but maybe not. look at the banners - full screen the look good but shrunk down in the upper right corner not so hot. and even further that big image would take up a lot more memory than a small one. changing its size does not change the memory it uses.
No, i want to take a very small image and stop it looking ludicrous on an average domestic TV. I understand that it wont take up less memory - nevertheless, is it possible to place the image off center?
Could possibly experiment with using different transformation filters within your image editing programs to get the best quality down-size, making your image smaller within the 200x100 boundaries of your canvas, using an alpha transparency channel; thus giving the illusion of smaller, higher resolution image akin to what is possible on modern hardware.

The one I was working on earlier today looked really crisp, without any apparent jags or pixelation.
I've actually resolved to using pixel art - thanks for the tip tho!
EDIT -resolved! - I KILL me :D
 
Last edited by kaisersozeh,

fledge68

Well-Known Member
OP
Member
Joined
Jan 30, 2012
Messages
2,439
Trophies
2
XP
4,976
Country
United States
this in video.cpp is what draws the wait images.

Code:
void CVideo::waitMessage(const TexData &tex)//draw frame image
{
    Mtx modelViewMtx;
    GXTexObj texObj;

    GX_ClearVtxDesc();
    GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
    GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
    GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);
    GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
    GX_SetNumTexGens(1);
    GX_SetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
    GX_SetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA);
    GX_SetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
    GX_SetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
    GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLORNULL);
    GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
    GX_SetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
    GX_SetAlphaUpdate(GX_TRUE);
    GX_SetCullMode(GX_CULL_NONE);
    GX_SetZMode(GX_DISABLE, GX_ALWAYS, GX_FALSE);
    guMtxIdentity(modelViewMtx);
    GX_LoadPosMtxImm(modelViewMtx, GX_PNMTX0);
    GX_InitTexObj(&texObj, tex.data, tex.width, tex.height, tex.format, GX_CLAMP, GX_CLAMP, GX_FALSE);
    GX_LoadTexObj(&texObj, GX_TEXMAP0);
    GX_Begin(GX_QUADS, GX_VTXFMT0, 4);
    u32 texWidth = m_wide ? tex.width * .75 : tex.width;
    GX_Position3f32((float)((640 - texWidth) / 2), (float)((480 - tex.height) / 2), 0.f);// widescreen = tex.width * .80
    GX_TexCoord2f32(0.f, 0.f);
    GX_Position3f32((float)((640 + texWidth) / 2), (float)((480 - tex.height) / 2), 0.f);
    GX_TexCoord2f32(1.f, 0.f);
    GX_Position3f32((float)((640 + texWidth) / 2), (float)((480 + tex.height) / 2), 0.f);
    GX_TexCoord2f32(1.f, 1.f);
    GX_Position3f32((float)((640 - texWidth) / 2), (float)((480 + tex.height) / 2), 0.f);
    GX_TexCoord2f32(0.f, 1.f);
    GX_End();
}

these lines are what control the image position and size:
GX_Begin(GX_QUADS, GX_VTXFMT0, 4);
u32 texWidth = m_wide ? tex.width * .75 : tex.width;
GX_Position3f32((float)((640 - texWidth) / 2), (float)((480 - tex.height) / 2), 0.f);// widescreen = tex.width * .80
GX_TexCoord2f32(0.f, 0.f);
GX_Position3f32((float)((640 + texWidth) / 2), (float)((480 - tex.height) / 2), 0.f);
GX_TexCoord2f32(1.f, 0.f);
GX_Position3f32((float)((640 + texWidth) / 2), (float)((480 + tex.height) / 2), 0.f);
GX_TexCoord2f32(1.f, 1.f);
GX_Position3f32((float)((640 - texWidth) / 2), (float)((480 + tex.height) / 2), 0.f);
GX_TexCoord2f32(0.f, 1.f);
GX_End();

so there you go. why you would want the image not centered i have know idea.
 

dishe

Well-Known Member
Member
Joined
Apr 11, 2018
Messages
134
Trophies
0
Age
44
XP
231
Country
United States
as for making the loading images appear sooner - the main problem is wiiflow has to init the video and get the IOS or cIOS that it will use before mounting the SD card and USB drive needed to load the images and display them. and getting the IOS or cIOS means checking the args for an IOS arg to use then loading and checking the wiiflow save file to see which IOS to use and then switching to that IOS to finally mount all devices.

so in the long run I could maybe right after the video init add a single splash screen image or text message like Get Ready! but it would have to be compiled into wiiflow lite code.
Makes a lot of sense. I don't know how long any of that actually takes to load, but on paper it definitely seems like it SHOULD take longer than the original baked-in loading images did to display. My question is how much of a real-world difference is it, and is it noticeable? I'm pretty sure the version you made for me with the spinning graphic did not take 10 seconds before you see anything.
@Hakaisha when you say it takes the same amount of the time whether you are using custom images or not, are you comparing only the latest build? Maybe the new build takes the same amount of time no matter what simply because it happens at the same point in the loading process (after all those other things happen), but the old builds display it sooner? That's what I want to know. The version I have now definitely has a delay before you see anything, but its a tolerable amount of time before the user isn't sure if power on worked or not. I definitely don't want it to take longer than that.

Meanwhile, @kaisersozeh I think I get what you're trying to do, but I don't think that's how it works. Scaling is a fickle thing, and the last thing you want to do is give the upscale algorithm LESS detail to scale! While it is true that modern hardware has more processing power to use a more complicated algorithm in real time, the fundamentals don't change: upscaling looks BAD, you can't make up pixels that don't exist (no CSI style "enhance!" computer magic exists) and the more you need to upscale, the greater potential to look ugly. In other words, a smaller starting resolution is going to result in a worse upscale to the same size, so whatever benefit you'd get from the faster processing would likely be gone. You might notice some graphics scale better than others- for example, a video in WiiMC on a modern upscaling TV will look pretty decent from a comfortable viewing distance, but the hard edges of text would not. That has to do with the decisions the upscaler has to make to fake resolution, and it will always have more trouble on hard contrasting lines than it will with softer edges. That's why if that same text that upscaled poorly were in, lets say, a scene of a movie being played in standard def, along with a background to anti-alias the edges over, it will upscale and look pretty decent compared to the high contrast plain text over a black background.
Whatever, I feel like I'm going too far off topic with this, but hopefully it makes sense. Depending on what your graphic is, it might benefit from an anti-aliasing filter or something similar rather than trying to force the TV to upscale more.
 
  • Like
Reactions: kaisersozeh

kaisersozeh

Well-Known Member
Member
Joined
Mar 21, 2018
Messages
260
Trophies
0
Location
Phobos
XP
1,054
Country
Antarctica
Gentlemen. Thank you for your concern. Really. Appreciated. I understand the concepts involved and what I am trying to acheive. It doesn't involve any upscaling.
Thanks

Sent from my GT-I9195 using Tapatalk
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    realtimesave @ realtimesave: @K3Nv2 I'm still not really convinced that sylverrez is a girl lol