Hacking USB Loader GX

  • Thread starter Thread starter blackb0x
  • Start date Start date
  • Views Views 8,066,690
  • Replies Replies 30,226
  • Likes Likes 74
They are the exact same thing than the one included in the "v2.3 AllinOnePackage", the only difference is that they are not in a packaqe.
They are downloaded by the EasyInstaller_1.7.exe

It's for users who don't understand how to download a .zip and extract it into the SD card.
They use the EasyInstaller.exe and it does the job for them.


They are also used by USBLoader's Update menu. (Settings > Update > Loader)
 
ah ok, thanks. I thought it was something new since the description said channel, then loader and update-server and the wording just confused me.
 
Is there a GX mod? or where can I download the latest version? (I need a download link for my app) (Legal download link Please) :)
There are official releases (on google code, and on an external website for internal-update purpose), and there are beta releases.

The beta are released on mediafire and other file host, so the links are always different, and can't be useful to your program.
So you can only link to the latest official release. They are better for the newbie anyway.

On Google Code, you can find this:
(You can link to any of these anytime without problem)

• There are 3 different files :
USBLoader_GX_V2_3_AllinOnePackage_IOS222.zip
USBLoader_GX_V2_3_AllinOnePackage_IOS249.zip
USBLoader_GX_V2_3_AllinOnePackage_IOS250.zip
By default (and if the user is updating from the loader), it's the IOS249 which is chosen.

When we release new versions, they are named the same USBLoader_GX_V2_3_AllinOnePackage_IOS249.zip (just the version number which increase)

• There is also the forwarder which is useful. It's either on a separate download, or included in the AllinOne.
a new one was released (5.1).

• And finally, there is an Easy_Installer for windows.
It copy the required files on SD or USB.
a new one was released today (1.7)


The installer is downloading the files from google code itself.
USBLoaderGX_v2.3_IOS249.dol (the dol)
USBLoaderGX_v2.3_IOS249.wad (the full channel)
It doesn't download the forwarder.


On Auto-update servers:
There's a server which host the boot.dol used for updating directly from the loader settings (which is always the Latest stable version IOS249).
I guess it would be the best solution for you, as it prevent the need to download the zip and extract them. Though, it's only the boot.dol, no forwarder available.

You should ask Dimok first if you want to link to that file directly, and he can give you the address.
It's now using the same link from googlecode.

So you can download the .dol from the googlecode, like our EasyInstaller and rename it boot.dol
The link to the latest Stable revision and dol can be found here:
http://usbloader-gui.googlecode.com/svn/branches/updates/update_dol.txt

Many many thanks, you're the best ;)

Wiiflow mod : I had to download everything separately (Advantages: always the latest version)
(languages /titles / settings / plugins/ ..)
Code:
Func _CurrentUSBWiiflowURL($SaveCurrentUSBWiiflow, $CurrentUSBWiiflowState, $CurrentUSBWiiflow_ListN = -1)
$startGeneratetime = _Timer_Init()
Local $CurrentUSBWiiflowSize = 0, $ReturnCurrentUSBWiiflowURL = ""

FileDelete(@TempDir & "\USBWiiflowupdate.xml")
Local $hDownload = InetGet("http://code.google.com/p/open-wiiflow-mod/downloads/list", @TempDir & "\USBWiiflowupdate.xml", 1, 1) ;Download Header
Do
Sleep(250)
Until InetGetInfo($hDownload, 2)
InetClose($hDownload)

$GetCurrentUSBWiiflowURL = FileRead(@TempDir & "\USBWiiflowupdate.xml")
FileClose($GetCurrentUSBWiiflowURL)
FileDelete(@TempDir & "\USBWiiflowupdate.xml") ;Clean

$StringCurrentUSBWiiflowVersion = _splitInfo($GetCurrentUSBWiiflowURL, 'open\-wiiflow\-mod\.googlecode\.com\/files\/Wiiflow\_Mod([^*]*?)\.zip', 1)
$StringCurrentUSBWiiflowPlugin = _splitInfo($GetCurrentUSBWiiflowURL, 'open\-wiiflow\-mod\.googlecode\.com\/files\/Wiiflow\_Plugins([^*]*?)\"', 1)

$UpdateUSBWiiflowURL = "http://open-wiiflow-mod.googlecode.com/files/Wiiflow_Mod" & $StringCurrentUSBWiiflowVersion & ".zip"
$UpdateUSBWiiflowPluginURL = "http://open-wiiflow-mod.googlecode.com/files/Wiiflow_Plugins" & $StringCurrentUSBWiiflowPlugin

FileDelete(@TempDir & "\SHA1ChecksumURL")
Local $hDownload = InetGet("http://code.google.com/p/open-wiiflow-mod/downloads/detail?name=" & StringRegExpReplace($UpdateUSBWiiflowURL, "^.*/(.*)$", "$1"), @TempDir & "\SHA1ChecksumURL", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2)
InetClose($hDownload)

$GetSHA1ChecksumURL = FileRead(@TempDir & "\SHA1ChecksumURL")
FileClose($GetSHA1ChecksumURL)
FileDelete(@TempDir & "\SHA1ChecksumURL") ;Clean
$StringSHA1ChecksumURL = _splitInfo($GetSHA1ChecksumURL, "SHA1 Checksum\: ([^*]*?)What\'s this\?", 1)
$StringSHA1Checksum = _splitInfo($StringSHA1ChecksumURL, "\> ([^*]*?) \<", 1)
$UpdateUSBWiiflowRelease = StringRegExpReplace($StringCurrentUSBWiiflowVersion, "_|svn", "")

FileDelete(@TempDir & "\SHA1ChecksumURL")
Local $hDownload = InetGet("http://code.google.com/p/open-wiiflow-mod/downloads/detail?name=" & StringRegExpReplace($UpdateUSBWiiflowPluginURL, "^.*/(.*)$", "$1"), @TempDir & "\SHA1ChecksumURL", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2)
InetClose($hDownload)

$GetPluginSHA1ChecksumURL = FileRead(@TempDir & "\SHA1ChecksumURL")

FileClose($GetPluginSHA1ChecksumURL)
FileDelete(@TempDir & "\SHA1ChecksumURL") ;Clean
$StringPluginSHA1ChecksumURL = _splitInfo($GetPluginSHA1ChecksumURL, "SHA1 Checksum\: ([^*]*?)What\'s this\?", 1)
$StringPluginSHA1Checksum = _splitInfo($StringPluginSHA1ChecksumURL, "\> ([^*]*?) \<", 1)

ConsoleWrite(@LF & _
"- Release : " & $UpdateUSBWiiflowRelease & @LF & _
"- URL : " & $UpdateUSBWiiflowURL & @LF & _
"- USBWiiflow SHA1 Checksum : " & $StringSHA1Checksum & @LF & _
"- Plugin URL : " & $UpdateUSBWiiflowPluginURL & @LF & _
"- Plugin SHA1 Checksum : " & $StringPluginSHA1Checksum & @LF)

DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\Languages")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\boxcovers")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\covers")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\trailers")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\fanart")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\help")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\settings")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\themes")
DirCreate($SaveCurrentUSBWiiflow & "\Wiiflow\plugins")


$SplitCurrentUSBWiiflow = StringSplit("arab.ini|brazilian.ini|chinese_s.ini|chinese_t.ini|danish.ini|dutch.ini|english.ini|finnish.ini|" & _
"french.ini|gallego.ini|german.ini|hungarian.ini|italian.ini|japanese.ini|norwegian.ini|" & _
"polish.ini|portuguese.ini|russian.ini|spanish.ini|swedish.ini|tagalog.ini|turkish.ini", "|")

For $ilWiiflow = 1 To $SplitCurrentUSBWiiflow[0]
Local $hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/" & $SplitCurrentUSBWiiflow[$ilWiiflow], 3)
Local $hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/" & $SplitCurrentUSBWiiflow[$ilWiiflow], _
$SaveCurrentUSBWiiflow & "\Wiiflow\Languages\" & $SplitCurrentUSBWiiflow[$ilWiiflow], 1, 1)

Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & "  " & $SplitCurrentUSBWiiflow[$ilWiiflow] & "        |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\Languages\" & $SplitCurrentUSBWiiflow[$ilWiiflow])
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\Languages\" & $SplitCurrentUSBWiiflow[$ilWiiflow]))
Next

$hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/fanart/GAMEID.ini")
$hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/fanart/GAMEID.ini", _
$SaveCurrentUSBWiiflow & "\Wiiflow\fanart\GAMEID.ini", 1, 1)
Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " (fanart : GAMEID.ini)         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\fanart\GAMEID.ini"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\fanart\GAMEID.ini")



$hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/english.txt")
$hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/english.txt", _
$SaveCurrentUSBWiiflow & "\Wiiflow\help\english.txt", 1, 1)
Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " (help : english.txt)         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\help\english.txt"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\help\english.txt")


$hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig1.ini")
$hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig1.ini", _
$SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig1.ini", 1, 1)
Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " (settings : gameconfig1.ini)         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig1.ini"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig1.ini")

$hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig2.ini")
$hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig2.ini", _
$SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig2.ini", 1, 1)
Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " (settings : gameconfig2.ini)         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig2.ini"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\gameconfig2.ini")

$hDownloadSize = InetGetSize("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/themes/default.ini")
$hDownload = InetGet("http://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/themes/default.ini", _
$SaveCurrentUSBWiiflow & "\Wiiflow\themes\default.ini", 1, 1)
Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " (themes : default.ini)         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\themes\default.ini"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\themes\default.ini")

$SplitTitleCurrentUSBWiiflow = StringSplit("EN|FR|DE|ES|IT|NL|PT|US|JA|KO|ZH", "|")

For $iTWiiflow = 1 To $SplitTitleCurrentUSBWiiflow[0]

$hDownloadSize = InetGetSize("http://www.gametdb.com/titles.txt?LANG=" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow])
$hDownload = InetGet("http://www.gametdb.com/titles.txt?LANG=" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow], _
$SaveCurrentUSBWiiflow & "\Wiiflow\settings\" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow] & "custom_titles.ini", 1, 1)

Do
$aInfo = InetGetInfo($hDownload)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $hDownloadSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " " & $SplitTitleCurrentUSBWiiflow[$iTWiiflow] & "custom_titles.ini         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
Sleep(250)
Until $aInfo[2]
InetClose($hDownload)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow] & "custom_titles.ini"))
$CurrentUSBWiiflowSize += FileGetSize($SaveCurrentUSBWiiflow & "\Wiiflow\settings\" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow] & "custom_titles.ini")
If $SplitTitleCurrentUSBWiiflow[$iTWiiflow] = "EN" Then _
FileCopy($SaveCurrentUSBWiiflow & "\Wiiflow\settings\" & $SplitTitleCurrentUSBWiiflow[$iTWiiflow] & "custom_titles.ini", $SaveCurrentUSBWiiflow & "\Wiiflow\settings\custom_titles.ini", 9)
Next

GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Boot.dol         |         " & $UpdateUSBWiiflowURL)

$DownloadCurrentUSBWiiflowSize = InetGetSize($UpdateUSBWiiflowURL)
$DownloadCurrentUSBWiiflow = InetGet($UpdateUSBWiiflowURL, $SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowURL, "^.*/(.*)$", "$1"), 1, 1)
$CurrentUSBWiiflowSize += $DownloadCurrentUSBWiiflowSize

Do
$aInfo = InetGetInfo($DownloadCurrentUSBWiiflow)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $DownloadCurrentUSBWiiflowSize * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & "         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then
_GUICtrlListView_SetItemText($HomebrewListView, $CurrentUSBWiiflow_ListN, $iPercent & "%", 4)
GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
EndIf
Sleep(250)
Until $aInfo[2]
InetClose($DownloadCurrentUSBWiiflow)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowURL, "^.*/(.*)$", "$1")))
GUICtrlSetData($CurrentUSBWiiflowState, "Successfully Downloaded         |         SHA1 Checksum: " & $StringSHA1Checksum)

Local $sReadSHA1 = $SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowURL, "^.*/(.*)$", "$1")
If StringStripWS($sReadSHA1, 8) <> "" And FileExists($sReadSHA1) Then
Local $bHash = _Crypt_HashFile($sReadSHA1, $CALG_SHA1)
ConsoleWrite("- Found USBWiiflow SHA1 Checksum: " & $bHash & @CRLF & "- Inter USBWiiflow SHA1 Checksum: 0x" & $StringSHA1Checksum)

If $bHash = "0x" & $StringSHA1Checksum Then
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Successfully Downloaded and verified         |         SHA1 Checksum: " & $StringSHA1Checksum & "         |         " & _
StringFormat("%.2f", Round(_Timer_Diff($startGeneratetime) / 1000, 2)) & " Seconds"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)

_UnZip_Init("_UnZIP_PrintFunc", "UnZIP_ReplaceFunc", "_UnZIP_PasswordFunc", "_UnZIP_SendAppMsgFunc", "_UnZIP_ServiceFunc")
_UnZIP_SetOptions()
_UnZIP_Unzip($sReadSHA1, $SaveCurrentUSBWiiflow)
If @error Then
GUICtrlSetState($MainTab, $GUI_DISABLE)
$ReturnCurrentUSBWiiflowURL = "Error! (Wiiflow Mod " & $UpdateUSBWiiflowRelease & ") Archive unpacking error!"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
MsgBox(16, "Error! (Wiiflow Mod " & $UpdateUSBWiiflowRelease & ")", "Archive unpacking error!" & @CRLF & $sReadSHA1, Default, $Gui)
GUICtrlSetState($MainTab, $GUI_ENABLE)
Else
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Successfully Downloaded and verified         |         SHA1 Checksum: " & $StringSHA1Checksum & "         |         " & _
StringFormat("%.2f", Round(_Timer_Diff($startGeneratetime) / 1000, 2)) & " Seconds"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
FileDelete($sReadSHA1)
EndIf

Else
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " already exists but it failed SHA1 verification.         |         SHA1 Checksum: " & $StringSHA1Checksum
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
EndIf
Else
$ReturnCurrentUSBWiiflowURL = "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Failed !         |         SHA1 Checksum: " & $StringSHA1Checksum
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
EndIf

GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins         |         " & $UpdateUSBWiiflowURL)

$DownloadCurrentUSBWiiflowSizePlugin = InetGetSize($UpdateUSBWiiflowPluginURL)
$DownloadCurrentUSBWiiflowPlugin = InetGet($UpdateUSBWiiflowPluginURL, $SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowPluginURL, "^.*/(.*)$", "$1"), 1, 1)
$CurrentUSBWiiflowSize += $DownloadCurrentUSBWiiflowSizePlugin

Do
$aInfo = InetGetInfo($DownloadCurrentUSBWiiflowPlugin)
$iPercent = StringFormat("%.2f", Round($aInfo[0] / $DownloadCurrentUSBWiiflowSizePlugin * 100, 2))
GUICtrlSetData($CurrentUSBWiiflowState, "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins         |         Size: " & _FormatFileSize($aInfo[1]) & "         |         Downloaded: " & _
_FormatFileSize($aInfo[0]) & " / " & _FormatFileSize($aInfo[1]) & "         |         Percent: " & $iPercent & "% ")
If $CurrentUSBWiiflow_ListN > -1 Then
_GUICtrlListView_SetItemText($HomebrewListView, $CurrentUSBWiiflow_ListN, $iPercent & "%", 4)
GUICtrlSetData($HomebrewListViewTransfered, _FormatFileSize(GUICtrlRead($HomebrewListViewTransferedUnformated) + $aInfo[0]))
EndIf
Sleep(250)
Until $aInfo[2]
InetClose($DownloadCurrentUSBWiiflowPlugin)
If $CurrentUSBWiiflow_ListN > -1 Then GUICtrlSetData($HomebrewListViewTransferedUnformated, GUICtrlRead($HomebrewListViewTransferedUnformated) + FileGetSize($SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowPluginURL, "^.*/(.*)$", "$1")))
GUICtrlSetData($CurrentUSBWiiflowState, "Successfully Downloaded         |         SHA1 Checksum: " & $StringPluginSHA1Checksum)

Local $sReadSHA1 = $SaveCurrentUSBWiiflow & "\" & StringRegExpReplace($UpdateUSBWiiflowPluginURL, "^.*/(.*)$", "$1")
If StringStripWS($sReadSHA1, 8) <> "" And FileExists($sReadSHA1) Then
Local $bHash = _Crypt_HashFile($sReadSHA1, $CALG_SHA1)
ConsoleWrite("- Found plugins SHA1 Checksum: " & $bHash & @CRLF & "- Inter plugins SHA1 Checksum: 0x" & $StringPluginSHA1Checksum)

If $bHash = "0x" & $StringPluginSHA1Checksum Then
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins Successfully Downloaded and verified         |         SHA1 Checksum: " & $StringPluginSHA1Checksum & "         |         " & _
StringFormat("%.2f", Round(_Timer_Diff($startGeneratetime) / 1000, 2)) & " Seconds"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)

If StringRight($sReadSHA1, 2) = "ip" Then
_UnZip_Init("_UnZIP_PrintFunc", "UnZIP_ReplaceFunc", "_UnZIP_PasswordFunc", "_UnZIP_SendAppMsgFunc", "_UnZIP_ServiceFunc")
_UnZIP_SetOptions()
_UnZIP_Unzip($sReadSHA1, $SaveCurrentUSBWiiflow & "\Wiiflow\plugins\")
ElseIf StringRight($sReadSHA1, 2) = "7z" Then
_7ZIPExtract(0, $sReadSHA1, $SaveCurrentUSBWiiflow & "\Wiiflow\plugins\", 1, 0)
EndIf

If @error Then
GUICtrlSetState($MainTab, $GUI_DISABLE)
$ReturnCurrentUSBWiiflowURL = "Error! (Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins) Archive unpacking error!"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
MsgBox(16, "Error! (Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins)", "Archive unpacking error!" & @CRLF & $sReadSHA1, Default, $Gui)
GUICtrlSetState($MainTab, $GUI_ENABLE)
Else
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins Successfully Downloaded and verified         |         SHA1 Checksum: " & $StringPluginSHA1Checksum & "         |         " & _
StringFormat("%.2f", Round(_Timer_Diff($startGeneratetime) / 1000, 2)) & " Seconds"
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
FileDelete($sReadSHA1)
EndIf

Else
$ReturnCurrentUSBWiiflowURL = "Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins already exists but it failed SHA1 verification.         |         SHA1 Checksum: " & $StringPluginSHA1Checksum
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
EndIf
Else
$ReturnCurrentUSBWiiflowURL = "Download : Wiiflow Mod " & $UpdateUSBWiiflowRelease & " Plugins Failed !         |         SHA1 Checksum: " & $StringSHA1Checksum
GUICtrlSetData($CurrentUSBWiiflowState, $ReturnCurrentUSBWiiflowURL)
EndIf

IniWrite($HomebrewINI, "Wiiflowboot.dol", "1", $UpdateUSBWiiflowURL & "|" & $CurrentUSBWiiflowSize & "|0x" & $StringSHA1Checksum)
IniWrite($HomebrewINI, "Wiiflowboot.dol", "3", $UpdateUSBWiiflowRelease)

Return $ReturnCurrentUSBWiiflowURL
EndFunc   ;==>_CurrentUSBWiiflowURL
 
Question for those who have dabbled with forwarder ISO's or might have some knowledge relevant to my issue:

I have some forwarder ISO's (using a modified version of Triiforce to do the loading) set up to use cIOS 38rev17 for some emunand games that don't work with d2x. These forwarder ISO's fail to launch with USB Loader GX but work with CFG. I have both loaders set up in the same way for auto cIOS reload blocking and have tried all options on GX to no avail.
Is there any reason why they would work with one loader but not the other one, related perhaps to how each load game ISO's?

Notes that forwarder ISO's set up to use d2x, do launch just fine.

On a related issue:
None of my forwarder ISO's return to channel. I imagine the loader loses control of the process because when it launches the ISO, the ISO launches Triiforce, which loads the emunand game. Right now, when hitting the home button and selecting Wii Menu, the game does just that, return to the Wii menu, whereas real ISO's return to the GX channel.
Is there a clever way around this?
 
Another question:

I would like to start over with a fresh dump of my nand, using GX to perform the dump.
My concern is save files. I can easily re-install all the games I had using ShowMiiWads but I'm not aware of a convenient way to restore all my save files.
Would I have to do it one-by-one using ShowMiiWads?
 
The latest version of Savegame Manager GX will allow you to import/export saves to and from the virtual nand.
 
In USBLoaders, Tagging means something else.
It refer to "game tagging" or "gamer tag", "creating a tag", it's the ability to send to a website the information on the played game in order to create a dynamic tag / signature for forums.

Downloading a cover is just "downloading" in a cover folder :P


You don't put the pictures on the root of the SD card, you need to place them in the correct folder, there are multiple folders (one for each type of cover : Flat/3D/LQ/HQ/Disc). If you put everything in the same folder, of course the loader will think it's already present, but in the wrong format.

If you want to reset one of the game's cover, you can do it directly from the loader:
Go to game settings > Second page > Delete > covers.
You can then download it again.

Select the type of cover you need in the cover download prompt (press (1) button on wiimote).
um well I don't have any of that. There is no place on my hd that stores covers. When I googled the problem the first time I made those folders myself and copied ver the pics from wbfs manager on my laptop made sure all the png images were the right sizes and lbeled exactly what the game is labeled. but no matter were I put them there not showing up. Go to game settings > Second page > Delete > covers there isn't these option on the loader settings. when I deleted the usb loader gx and reinstalled whatever version says its the newest version it just reinstalled what I already had. So it seems like I have the latest usb gx loader I really don't get why mine wuld be diff.
 
Why do you use an external program to download the covers and put them manually on your SD card?

You know that USB Loader GX downloads all the covers correctly and place them correctly, in the right format, the right size, the right place, without you caring for that?

It's "normal" that you don't have the folder on your SD card on first launch.
The ONLY thing you have on your SD card when you never used the loader is boot.dol file.

Then when you download a cover from within the loader, USBLoader_GX creates all the folders itself, in the correct places on your SD or USB.


when you say "I don't have any of that", what do you mean?
You don't have the "Download cover menu" when you press 1 on the wiimote? (try 2 instead of 1).



The pictures are downloaded from this website : http://gametdb.com
It downloads the cover from the region of the game (if the game is PAL, it will check on the PAL page), then it will take the covers corresponding to the language of your USBloaderGX.
If your loader is in French, it will download the french covers.
If that language is not present, then that's why it's not working. Try setting your Loader's language to something else?


For example:
day of crisis : It doesn't exist in NTSC-U, so you certainly are using the PAL one.
You live in USA, so your USBLoader is certainly in english.
Gametdb.com has all covers for that game in english, so it should work fine.



Maybe your Wifi doesn't work anymore on your wii?
Check your network setting.
 
  • Like
Reactions: 1 person
Can Cyan or anybody else clarify the difference between the "emu nand" and "emu nand channels" path?
I think the emu nand games are read and launched from the emu nand channels path. If I recall correctly, last night, when I dumped the nand with USBGX, it put it on my emu nand path as opposed to the channels path.
What about emulated saves from disc games? Are those saved in the emu nand path or the emu nand channels path?
And when I use the copy sysconf option, does it update the one in my emu nand or emu nand channels path?
This is confusing.

Another question:
What is the best way to filter out specific games from showing in my list?
I know this can be done through categories, but that would require adding all the desired games to a custom category when you only want to filter out a few. An exception method would be more convenient where you could exclude certain categories. This way, you could have your undesired channels or games in this category and the would never show up. This way if I want to show some games from my real nand but not the stupid weather channel, I can put it into this "undesirable" category.
 
Depends what features of GX you are useing -

I use parental control, manually set up all the games you don't want to show to "18", then set the parental control to one level lower, when locked the games are hidden, when unlocked visable.
 
Depends what features of GX you are useing -

I use parental control, manually set up all the games you don't want to show to "18", then set the parental control to one level lower, when locked the games are hidden, when unlocked visable.
Yes but I was hoping not having to use that because I like to keep GX unlocked always for easy access to homebrew, settings, etc.
It's an option, but not what I'm looking for.
Thanks.
 
Why do you use an external program to download the covers and put them manually on your SD card?

You know that USB Loader GX downloads all the covers correctly and place them correctly, in the right format, the right size, the right place, without you caring for that?

It's "normal" that you don't have the folder on your SD card on first launch.
The ONLY thing you have on your SD card when you never used the loader is boot.dol file.

Then when you download a cover from within the loader, USBLoader_GX creates all the folders itself, in the correct places on your SD or USB.


when you say "I don't have any of that", what do you mean?
You don't have the "Download cover menu" when you press 1 on the wiimote? (try 2 instead of 1).



The pictures are downloaded from this website : http://gametdb.com
It downloads the cover from the region of the game (if the game is PAL, it will check on the PAL page), then it will take the covers corresponding to the language of your USBloaderGX.
If your loader is in French, it will download the french covers.
If that language is not present, then that's why it's not working. Try setting your Loader's language to something else?


For example:
day of crisis : It doesn't exist in NTSC-U, so you certainly are using the PAL one.
You live in USA, so your USBLoader is certainly in english.
Gametdb.com has all covers for that game in english, so it should work fine.



Maybe your Wifi doesn't work anymore on your wii?
Check your network setting.
no I have been using this program for a good while now it has the download cover feature
it has always worked so I never had to question it. It works right now if I put a game on today it will download the cover no problem.

however it doesn't activate by pressing 1 or 2 on th wiimote. under the game setting I don't have the option to delete covers. 500 gb my passort wd hard drive or the 4gb sd card I have plugged into my wii at all times a folder was never created on either of those containing covers that were downloaded through usb loader gx. It never made these folders when I downloaded my first cover to when I downloaded my 115 cover. In one lump sum one day I place pandoras tower, trivial pursuit, 3 trauma center games, transformers cyberton, tna impact, deweys adventure, deadly creatures, tomb raider ann, tomb raider underworld on the day I placed these games on my EXHD using wbfs manager to send them to the hard drive same way I always do and I have done a bulk game uplod a few times never had a problem it initiated whatever it downloaded covers it said complete None of those games named here covers display at all.
I googled my usb loader gx won't download covers properly. Read that this has been done to other people before and read there solutions and watched a few youtube videos. All the info I read and tried to troubleshoot this problem myself was manually making the covers myself by making and images folder on my exhd and placing manually finding the covers making them png files and making them the proper size making sure they are labeled the same as the game is. placing them in folders like 2d, 3d, cover, disc, full, front.
I tried updatingusb gx loader. I even removed usb loader gx ad came here found the "latest" version of usb loader and installed that.

after all that I came here made my first post asking for help in this thread.
 
It seems you need a fresh install package.
When you have that, you can replace the.dol for the latest beta version.
 
Just to ask, where can I find the latest compiled SVN which supports DML v1.2+, both GCReEx & DiscEx formats and extraction from NGC Multi-Game discs?
 
Can Cyan or anybody else clarify the difference between the "emu nand" and "emu nand channels" path?
I think the emu nand games are read and launched from the emu nand channels path. If I recall correctly, last night, when I dumped the nand with USBGX, it put it on my emu nand path as opposed to the channels path.
What about emulated saves from disc games? Are those saved in the emu nand path or the emu nand channels path?
And when I use the copy sysconf option, does it update the one in my emu nand or emu nand channels path?
This is confusing.
Short Story:
EmuNand path (save): Only for Wiigames (save games, Mii)
EmuNand Path Channels: Only for channels (WiiWare, VC, Homebrew installed as channels)

Extract dump: extract only to EmuNand Path (save).
Extract save, sysconf, mii : Extract to both paths (as said in the prompt text).
Game setting > Extract save : I think it extracts only to EmuNand (save) Path. I'll have to check the source.
Manage Wads : (un)Installs only on EmuNand Path Channels (The one where you see the installed wads/channels from within the loader).


Full Story:
First step:
When we introduced the EmuNand, there were only one path : EmuNand Path.
This path is used for Wii Games, and can be enabled in full mode or partial mode.


The full mode use all the NAND copy as if it was the Wii.
The partial one redirects only the /titles/ folder from the EmuNand Path. It's used to Load/Save the Wii game's savegames ONLY. It allows more storage space and easy portable saves when going to family's or friend's.
If you never dumped your NAND but still use the Partial method, it creates only the minimum required files automatically (the /titles/path/to/savegames/, without the other nand files). It's smaller (few Kb) and you don't need to dump 500MB of data.

The NAND Dumping feature use this path.
The "Extract All saves" use this path.
The "Extract save" (in game setting) use this path.


Up to this point everybody should understand how it works.

Second Step:
Then we introduced the Channels launching from EmuNand. This launching method requires always the FULL emulation mode, as it need to access files located in other folders than /titles/

Some users already had a full NAND copy (from sneek for example) full of channels, and already used an empty one for Wii saves only, so instead of merging both, some users (and I'm part of them) asked if we could separate this "always Full nand" for channels from the "empty partial nand" for save games only.

So there are now two paths:
- EmuNand Path (save) used only for Wii games: partial or full mode.
- EmuNand Path (channels) used for channels launching only: Full NAND required. There's an option for partial mode in the settings, but it requires a full dump. I'll have to try that, but I think it's used to save on EmuNand (Save) but load game from EmuNand (channel).


You can of course redirect both paths on the same nand dump. Both Sd:\nand\ will work fine.


Third step:
Users asked a way to quickly change the EmuNand path (save) for certain wii games only, so we added a Nand Path option in the individual Game settings.





Another question:
What is the best way to filter out specific games from showing in my list?
I know this can be done through categories, but that would require adding all the desired games to a custom category when you only want to filter out a few. An exception method would be more convenient where you could exclude certain categories. This way, you could have your undesired channels or games in this category and the would never show up. This way if I want to show some games from my real nand but not the stupid weather channel, I can put it into this "undesirable" category.

You have few options:
- Favorite level
- Categories (hard to set, as you need to give categories to the one you want to keep, and it's using the OR switch and not the AND) Maybe we could add an option to switch OR and AND.
- Simple Parental Control (based on levels of the game) : set the level of the game you want to hide to 18+ and set the loader level to one less level.
- Individual Parental Control : each games have a "Lock" setting. It hide it regardless of the level of the game.


Do you have another suggestion to manage displayed games?
I think putting a "AND" instead of OR effect to the category filter would already help.
Putting a NOT/NOR would be a good idea too :P
 
You have few options:
- Favorite level
- Categories (hard to set, as you need to give categories to the one you want to keep, and it's using the OR switch and not the AND) Maybe we could add an option to switch OR and AND.
- Simple Parental Control (based on levels of the game) : set the level of the game you want to hide to 18+ and set the loader level to one less level.
- Individual Parental Control : each games have a "Lock" setting. It hide it regardless of the level of the game.


Do you have another suggestion to manage displayed games?
I think putting a "AND" instead of OR effect to the category filter would already help.
Putting a NOT/NOR would be a good idea too :P
Thanks for the explanation about the nand paths :grog:

About hiding games, all of your suggestions are workable, but eliminate the original function of each of those features. This is not the case with your Categories suggestion, but it requires adding each game you want to keep to a category and doing it for each new game, which is cumbersome.

What I was thinking was one of two alternatives:
1. Provide a list menu with check boxes to uncheck any games you want to hide, regardless of parental controls or category settings. This is simple from a user standpoint and effective but requires more work on your end to add yet another sub-screen.
2. In the category menu, add the option to exclude certain categories from being displayed (like your NOT/NOR idea). This way, the user can add the games they don't want to show to a new user-defined category, like "crap", and these games will never show up.
What do you think about that one, in terms of code implementation?
 

Site & Scene News

Popular threads in this forum