Hacking USB Loader GX

  • Thread starter cyrex
  • Start date
  • Views 7,153,653
  • Replies 29,352
  • Likes 47

XFlak

Wiitired but still kicking
Member
Joined
Sep 12, 2009
Messages
13,803
Trophies
3
Age
38
Location
Cyprus, originally from Toronto
Website
modmii.github.io
XP
9,790
Country
Cyprus
  • Like
Reactions: jeannotte

NoobletCheese

Well-Known Member
Member
Joined
Aug 12, 2018
Messages
533
Trophies
0
Age
25
XP
1,083
Country
United States
You sure? If usb loaders can patch wiimmfi support on the fly, why not deflicker?

I meant USB Loader GX doesn't currently have such a setting. But in theory I don't see why it couldn't be implemented, and I hope someone with the required knowledge could take the time to do it.

Mario Kart Wii is one that aggravates me particularly. The low camera angle and constant viewing far into the distance really needs more clarity than the filter allows.

I wish I had a capture card to make an animated png showing the damage being done. If you have a good visual memory, in a Wii game hit Home and then Wii Menu. The confirmation text box that comes up has a font that makes it obvious whether the filter is in effect.

New Mario Bros Wii doesn't have the filter, and I wish someday all games could be that clear. We need to make this happen!
 

blackb0x

Well-Known Member
Member
Joined
Apr 22, 2019
Messages
788
Trophies
1
XP
3,545
Country
United Kingdom
Just tested these now and no it does not.
Is there any other homebrew besides Nintendont that works with it? Because without some compatible code I can't add support for the adapter.

You sure? If usb loaders can patch wiimmfi support on the fly, why not deflicker?
It could be done, but I don't know how reliable it'd be since video mode patching isn't exactly flawless either. I might eventually look into it though, but not for my next release.
 

JacobM

Well-Known Member
Member
Joined
Jun 16, 2017
Messages
242
Trophies
0
XP
599
Country
United States
@blackb0x I know you mentioned in the past introducing SD loading would be too big of a project to take on, but based on the recent discussions of referencing other homebrew for features, I thought it may be constructive to mention that USB Loader GX was spun off Waninkoko's USB Loader which at some point released SD support. I figured the similar codebase could make remerging that feature a greater possibility one day.

https://github.com/waninkoko/sd-usb-loader

I beleive CFG Loader (also with SD support) was also spun off Waninkoko's Loader (https://github.com/brink182/cfg-loader)
 
Last edited by JacobM,

blackb0x

Well-Known Member
Member
Joined
Apr 22, 2019
Messages
788
Trophies
1
XP
3,545
Country
United Kingdom
@JacobM It's not really too big of a project, but my lack of time to make all of the required changes. And since I won't personally use the feature there's less of an incentive for me to work on it too.

If I find the time I might eventually add SD support for Wii games. I'm not going to make any promises though.
 

NoobletCheese

Well-Known Member
Member
Joined
Aug 12, 2018
Messages
533
Trophies
0
Age
25
XP
1,083
Country
United States
Is there any way to fix the issue where after downloading covers, or after launching without a USB drive attached, and then reattaching it at the next boot, having to manually refresh the game list by unticking and reticking title sources?

I don't mind the cover issue so much as I'm manually intervening in that scenario anyway, but I'm sure a family member is going to accidentally boot without the USB drive attached and then at the next boot with drive attached will be confused about why half the games are missing or have incorrect titles (titles not being read from offline gametdb cache file until manually refreshing title sources).

jd6hn7rm.png
 
Last edited by NoobletCheese,

blackb0x

Well-Known Member
Member
Joined
Apr 22, 2019
Messages
788
Trophies
1
XP
3,545
Country
United Kingdom
Here's a new version.
  • Updated the Wiimmfi patch thanks to Leseratte10
  • Fixed a crash that occurs when using some third party classic controllers
  • Fixed an issue that would cause a few games to freeze
  • Fixed parental controls not working when header caching is enabled
  • Fixed PAL to NTSC video mode patching
  • Fixed background music selection
  • Fixed game size detection when exporting to a list
  • Fixed zip file extraction after updating to devkitPPC r38
Download: https://gbatemp.net/posts/8856063

@NoobletCheese That's by design, since you're not really expected to use the loader without a HDD. And if I remember correctly you'll boot slowly unless you press B and then it'll tell you that it's switching to channel list mode.
 
Last edited by blackb0x,

johw

Well-Known Member
Member
Joined
Oct 12, 2020
Messages
314
Trophies
0
Age
43
XP
1,199
Country
Brazil
Here's a new version.
  • Updated the Wiimmfi patch thanks to Leseratte10
  • Fixed a crash that occurs when using some third party classic controllers
  • Fixed an issue that would cause a few games to freeze
  • Fixed parental controls not working when header caching is enabled
  • Fixed PAL to NTSC video mode patching
  • Fixed background music selection
  • Fixed game size detection when exporting to a list
  • Fixed zip file extraction after updating to devkitPPC r38
Download: https://gbatemp.net/posts/8856063

@NoobletCheese That's by design, since you're not really expected to use the loader without a HDD. And if I remember correctly you'll boot slowly unless you press B and then it'll tell you that it's switching to channel list mode.
thanks for the work
has the tab mod version been updated as well?
 
  • Like
Reactions: Alexander1970

blackb0x

Well-Known Member
Member
Joined
Apr 22, 2019
Messages
788
Trophies
1
XP
3,545
Country
United Kingdom
Is the tab mod version a separate version all together? Or will it be an update to the main version of gx with a toggle for the tab mod/view?
It's a totally separate build because it changes the UI and some things need to be reworked a little.

It also doesn't work well with themes and only looks correct on widescreen TVs.
 
Last edited by blackb0x,

Maeson

Well-Known Member
Member
Joined
Apr 3, 2013
Messages
1,179
Trophies
1
XP
3,380
Country
Spain
Thank you for your work on USB Loader GX, blackb0x!

It seems it got some good improvements. Could you please tell me about the PAL to NTSC and music fixes?
Does the freeze fix with Metafortress games mean that you no longer need that txt file, or this is on top of it?

Again, thank you.
 

blackb0x

Well-Known Member
Member
Joined
Apr 22, 2019
Messages
788
Trophies
1
XP
3,545
Country
United Kingdom
Could you please tell me about the PAL to NTSC
The Revolution SDK and libogc v2.0.0 have conflicting render modes, so I had to add the correct Revolution SDK render modes into the loader. And while I was at it I also corrected 2 render modes that were previously converting to TVNtsc480Prog when they should of been converting to TVNtsc480ProgSoft & TVNtsc480ProgAa.

and music fixes
With the official release or my previous release if you went to the loaders sound settings and clicked on "background music" then the path would look corrupted.

Does the freeze fix with Metafortress games mean that you no longer need that txt file, or this is on top of it?
The fix just permanently disables the 480p patch for these specific games, since that's what causes the issue.

With a modern d2x cIOS you shouldn't need the patch file for any of these games anyway, unless you're patching the game in some way e.g. video modes or cheats.
 
Last edited by blackb0x,

NoobletCheese

Well-Known Member
Member
Joined
Aug 12, 2018
Messages
533
Trophies
0
Age
25
XP
1,083
Country
United States
I also corrected 2 render modes that were previously converting to TVNtsc480Prog when they should of been converting to TVNtsc480ProgSoft & TVNtsc480ProgAa.

Does this mean you are able to force games that normally render in 480ProgSoft or 480ProgAa to render in 480Prog?

As you are probably aware, that is a feature that I would kill for :):ph34r:

edit: possibly relevant function

https://github.com/cyan06/usbloadergx/blob/master/source/patches/gamepatches.c said:
static void patch_videomode(GXRModeObj* mode1, GXRModeObj* mode2)
{
mode1->viTVMode = mode2->viTVMode;
mode1->fbWidth = mode2->fbWidth;
mode1->efbHeight = mode2->efbHeight;
mode1->xfbHeight = mode2->xfbHeight;
mode1->viXOrigin = mode2->viXOrigin;
mode1->viYOrigin = mode2->viYOrigin;
mode1->viWidth = mode2->viWidth;
mode1->viHeight = mode2->viHeight;
mode1->xfbMode = mode2->xfbMode;
mode1->field_rendering = mode2->field_rendering;
mode1->aa = mode2->aa;
mode1->sample_pattern[0][0] = mode2->sample_pattern[0][0];
mode1->sample_pattern[1][0] = mode2->sample_pattern[1][0];
mode1->sample_pattern[2][0] = mode2->sample_pattern[2][0];
mode1->sample_pattern[3][0] = mode2->sample_pattern[3][0];
mode1->sample_pattern[4][0] = mode2->sample_pattern[4][0];
mode1->sample_pattern[5][0] = mode2->sample_pattern[5][0];
mode1->sample_pattern[6][0] = mode2->sample_pattern[6][0];
mode1->sample_pattern[7][0] = mode2->sample_pattern[7][0];
mode1->sample_pattern[8][0] = mode2->sample_pattern[8][0];
mode1->sample_pattern[9][0] = mode2->sample_pattern[9][0];
mode1->sample_pattern[10][0] = mode2->sample_pattern[10][0];
mode1->sample_pattern[11][0] = mode2->sample_pattern[11][0];
mode1->sample_pattern[0][1] = mode2->sample_pattern[0][1];
mode1->sample_pattern[1][1] = mode2->sample_pattern[1][1];
mode1->sample_pattern[2][1] = mode2->sample_pattern[2][1];
mode1->sample_pattern[3][1] = mode2->sample_pattern[3][1];
mode1->sample_pattern[4][1] = mode2->sample_pattern[4][1];
mode1->sample_pattern[5][1] = mode2->sample_pattern[5][1];
mode1->sample_pattern[6][1] = mode2->sample_pattern[6][1];
mode1->sample_pattern[7][1] = mode2->sample_pattern[7][1];
mode1->sample_pattern[8][1] = mode2->sample_pattern[8][1];
mode1->sample_pattern[9][1] = mode2->sample_pattern[9][1];
mode1->sample_pattern[10][1] = mode2->sample_pattern[10][1];
mode1->sample_pattern[11][1] = mode2->sample_pattern[11][1];
mode1->vfilter[0] = mode2->vfilter[0];
mode1->vfilter[1] = mode2->vfilter[1];
mode1->vfilter[2] = mode2->vfilter[2];
mode1->vfilter[3] = mode2->vfilter[3];
mode1->vfilter[4] = mode2->vfilter[4];
mode1->vfilter[5] = mode2->vfilter[5];
mode1->vfilter[6] = mode2->vfilter[6];

}
 
Last edited by NoobletCheese,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: good night