Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

TinyLoad Wii: Difference between revisions

From GameBrew
m (HydeWing moved page Tinyload Wii to TinyLoad Wii without leaving a redirect)
No edit summary
Line 1: Line 1:
{{#seo:
|title=Wii Homebrew Loaders
(Loader) - GameBrew
|title_mode=append
|image=tinyloadwii.jpg
|image_alt=TinyLoad
}}
{{Infobox Wii Homebrews
{{Infobox Wii Homebrews
|title=TinyLoad
|title=TinyLoad
|image=tinyloadwii.jpg
|image=tinyloadwii2.png
|description=Loads an original Wii game of any region, period.
|description=Loads an original Wii game of any region.
|author=marcan
|author=marcan
|lastupdated=2009/12/20
|lastupdated=2011/08/01
|type=Loader
|type=Loader
|version=0.2
|version=LetterBomb compatible
|license=GPL-2.0
|license=GPL-2.0
|download=https://dlhb.gamebrew.org/wiihomebrews/tinyloadwii.7z
|download=https://dlhb.gamebrew.org/wiihomebrews/tinyloadwii.7z
|website=https://web.archive.org/web/20091212183645/http://marcansoft.com/blog
|website=https://marcan.st/posts/
|source=https://dlhb.gamebrew.org/wiihomebrews/tinyloadwii.7z
|source=https://dlhb.gamebrew.org/wiihomebrews/tinyloadwii.7z
}}
}}
TinyLoad is a region-free original Wii game loader in 4096 bytes.
TinyLoad is a region-free original Wii game loader in 4096 bytes.


==What is TinyLoad?==
==User guide==
TinyLoad is a simple original Wii game launcher. You run it, it launches
The user interface shows two things: progress, and error status.  
whatever's inserted into the drive. Simple. It ignores game regions, so it's
 
region-free. It won't install updates. It won't load burned copies. There are no
A white bar across the bottom of the screen shows the current (rough) progress. If an error is detected, a portion of the top of the screen will turn red. It will then attempt to launch The Homebrew Channel (only applies to recent versions with the JODI Title ID). If this fails then it will simply hang.
controls or settings.
 
If the launcher freezes with the progress bar visible and no red error box, then you've probably hit a bug. Try the debug version if you have a USB Gecko.
 
If it freezes with a black screen after the progress bar has reached its endpoint and disappeared, then the game itself is freezing.


The user interface shows two things: progress, and error status. A white bar
The debug version requires a USB Gecko and shows debug messages over it.
across the bottom of the screen shows the current (rough) progress. If an error
is detected, a portion of the top of the screen will turn red. It will then
attempt to launch The Homebrew Channel (only applies to recent versions with the
JODI Title ID). If this fails then it will simply hang.


If the launcher freezes with the progress bar visible and no red error box, then
===Author's notes===
you've probably hit a bug. Try the debug version if you have a USB Gecko.
*TinyLoad sets the PPC timebase correctly according to your Wii's RTC. This fixes date/time issues in games.


If it freezes with a black screen after the progress bar has reached its
*The video code makes lots of assumptions. It will only work if VI was left configured in a "standard" mode, with a 640x480-640x574 framebuffer. VI should be blanked; if it isn't, then TinyLoad will not blank it before launching the game so your screen will blink green for a split second as the game initializes VI. It has been tested to work correctly when launched by the [[Homebrew Channel Wii|Homebrew Channel]] in at least NTSC 480p and PAL interlaced modes. If these assumptions don't hold then the progress bar display will not work properly, but the rest of the loader should work fine.
endpoint and disappeared, then the game itself is freezing.


I obviously have only tested this with a few games. Chances are it doesn't work
*TinyLoad does not perform _any_ patching of games. The lowmem video mode setting follows whatever video mode was left set by the application used to launch TinyLoad, except that PAL games are forced to PAL if NTSC is detected. This does not patch the game, it's merely the informative value in low memory; games are free to read SYSCONF/setting.txt and ignore it. I don't really care because I use 480p mode anyway. If you need more advanced options, just use [[Gecko OS Wii|Gecko OS]].
with every Wii game out there.


The debug version requires a USB Gecko and shows debug messages over it.
*Normally, game audio will not work correctly if launched via a loader that was initially launched via BootMii-boot2. This is a bug in libogc (it doesn't know how to initialize the DSP for the first time and leaves it in a broken state), and it affects anything running after the Wii was booted first into a libogc application, including the System Menu's loader. In other words, BootMii-boot2 -> HBC -> System Menu (or Gecko OS) -> Game may cause distorted audio. TinyLoad _does_ work, by resetting the audio hardware to let the game reinitialize it properly. So, BootMii-boot2 -> HBC -> TinyLoad -> Game will work fine. This ought to be worked around in a future release of HBC, at least. I'd suggest fixing libogc, but I know shagkur is just going to rip the proper code from the SDK again. Anyway, launching using TinyLoad will work fine as it contains the workaround.


'''Notes:'''
*TinyLoad will load the correct IOS as specified in the partition TMD. It does not support loading any other IOS.
* TinyLoad sets the PPC timebase correctly according to your Wii's RTC. This fixes date/time issues in games.
* The video code makes lots of assumptions. It will only work if VI was left configured in a "standard" mode, with a 640x480-640x574 framebuffer. VI should be blanked; if it isn't, then TinyLoad will not blank it before launching the game so your screen will blink green for a split second as the game initializes VI. It has been tested to work correctly when launched by the [[Homebrew Channel Wii]] in at least NTSC 480p and PAL interlaced modes. If these assumptions don't hold then the progress bar display will not work properly, but the rest of the loader should work fine.
* TinyLoad does not perform _any_ patching of games. The lowmem video mode setting follows whatever video mode was left set by the application used to launch TinyLoad, except that PAL games are forced to PAL if NTSC is detected. This does not patch the game, it's merely the informative value in low memory; games are free to read SYSCONF/setting.txt and ignore it. I don't really care because I use 480p mode anyway. If you need more advanced options, just use [[Gecko Os Wii]].
* Normally, game audio will not work correctly if launched via a loader that was initially launched via BootMii-boot2. This is a bug in libogc (it doesn't know how to initialize the DSP for the first time and leaves it in a broken state), and it affects anything running after the Wii was booted first into a libogc application, including the System Menu's loader. In other words, BootMii-boot2 -> HBC -> System Menu (or Gecko OS) -> Game may cause distorted audio. TinyLoad _does_ work, by resetting the audio hardware to let the game reinitialize it properly. So, BootMii-boot2 -> HBC -> TinyLoad -> Game will work fine. This ought to be worked around in a future release of HBC, at least. I'd suggest fixing libogc, but I know shagkur is just going to rip the proper code from the SDK again. Anyway, launching using TinyLoad will work fine as it contains the workaround.
* TinyLoad will load the correct IOS as specified in the partition TMD. It does not support loading any other IOS.
* TinyLoad will not install updates. Not having the right IOS for the game will probably result in a red error and reset about halfway through.


'''Broken stuff:'''
*TinyLoad will not install updates. Not having the right IOS for the game will probably result in a red error and reset about halfway through.
*I don't think online games work. Not sure why (I do copy the TitleID to the proper spot, I think). If it works for you, let me know. Likewise, if you know what the problem is or you can fix it, please let me know.


==Why TinyLoad?==
===Why it's made===
Because:
Because:
* System Menu 4.2 forever broke region free via modchips
* System Menu 4.2 forever broke region free via modchips.
* I have a USA Wii which I regularly use with EUR games
* I have a USA Wii which I regularly use with EUR games.
* Gecko OS is somewhat annoying and recent versions are unstable (for me anyway)
* Gecko OS is somewhat annoying and recent versions are unstable (for me anyway).
* I refuse to perform retarded firmware mods.
* I refuse to perform retarded firmware mods..
* I autoboot HBC via BootMii-boot2 and using the System Menu takes longer anyway.
* I autoboot HBC via BootMii-boot2 and using the System Menu takes longer anyway.


I also think that low-level apps that tightly hug the hardware are very educational, so why not. And hey, the code is pretty short, so you ought to be able to read it completely and learn how all this crazy Wii stuff *actually* works :-)
I also think that low-level apps that tightly hug the hardware are very educational, so why not. And hey, the code is pretty short, so you ought to be able to read it completely and learn how all this crazy Wii stuff "actually" works.
 
===How it's made===
TinyLoad is not compressed. The 4 kilobytes are raw code and data, plus the ELF header. The original loader was fit in 4 kilobytes by avoiding bloated libraries like libogc and instead using a small codebase pieced together from bits of the Twilight Hack and of HBC's reload stub. Extra features (SYSCONF reading, RTC reading, proper lowmem settings, VI stuff, progress bar, etc) were added by making space via a combination of increasingly complex compiler options, manual tweaks, and micro-optimization.
 
Nonetheless, there is almost no assembly code and the C code, though compact and odd at times, should be moderately readable. Just keep in mind that I deliberately leave old values floating around and/or use odd initializations in order to simplify the code. Also, I haven't commented most of it. If you're really interested, give me a shout and I'll see what I can do to make it more acceptable.
 
If you want some "real" fun, load the ELF in IDA. The function inlining and tail call goodness ought to provide tons of entertainment.
 
==Known issues==
Does not work with every Wii games, only a few game have been tested.
 
Online games doesn't work. Not sure why.
 
==Changelog==
'''2011-08 LetterBomb compatible build'''
*LetterBomb compatible version. This fixes a bug and makes it work straight from LetterBomb, which lets you play imports while making no changes to your Wii. To use this, download LetterBomb without the "bundle" checkbox checked, and instead place this boot.elf on your SD card. Clicking on the red envelope will then boot whatever (original, but possibly imported) disc is inserted (the disc must be inserted first).


==How?==
==Credits==
TinyLoad is not compressed. The 4 kilobytes are raw code and data, plus the ELF
Program:
header. The original loader was fit in 4 kilobytes by avoiding bloated libraries
*Copyright 2008-2009 Hector Martin (marcan).
like libogc and instead using a small codebase pieced together from bits of the
Twilight Hack and of HBC's reload stub. Extra features (SYSCONF reading, RTC
reading, proper lowmem settings, VI stuff, progress bar, etc) were added by
making space via a combination of increasingly complex compiler options, manual
tweaks, and micro-optimization.


Nonetheless, there is almost no assembly code and the C code, though compact and
Supporting code:
odd at times, should be moderately readable. Just keep in mind that I
*Copyright 2008-2009 Segher Boessenkool.
deliberately leave old values floating around and/or use odd initializations in
*Copyright 2008-2009 Andre Heider (dhewg).
order to simplify the code. Also, I haven't commented most of it. If you're
*Copyright 2008 Nuke.
really interested, give me a shout and I'll see what I can do to make it more
acceptable.


If you want some *real* fun, load the ELF in IDA. The function inlining and tail
Awesome icon:
call goodness ought to provide tons of entertainment.
*Copyright 2009 Freddy Leitner (drmr).


== External links ==
== External links ==
* Official Website - https://web.archive.org/web/20091212183645/http://marcansoft.com/blog
* Author's website - https://marcan.st/posts/
* Wiibrew - https://wiibrew.org/wiki/TinyLoad
* WiiBrew - https://wiibrew.org/wiki/TinyLoad

Revision as of 15:13, 22 March 2023

TinyLoad
Tinyloadwii2.png
General
Authormarcan
TypeLoader
VersionLetterBomb compatible
LicenseGPL-2.0
Last Updated2011/08/01
Links
Download
Website
Source

TinyLoad is a region-free original Wii game loader in 4096 bytes.

User guide

The user interface shows two things: progress, and error status.

A white bar across the bottom of the screen shows the current (rough) progress. If an error is detected, a portion of the top of the screen will turn red. It will then attempt to launch The Homebrew Channel (only applies to recent versions with the JODI Title ID). If this fails then it will simply hang.

If the launcher freezes with the progress bar visible and no red error box, then you've probably hit a bug. Try the debug version if you have a USB Gecko.

If it freezes with a black screen after the progress bar has reached its endpoint and disappeared, then the game itself is freezing.

The debug version requires a USB Gecko and shows debug messages over it.

Author's notes

  • TinyLoad sets the PPC timebase correctly according to your Wii's RTC. This fixes date/time issues in games.
  • The video code makes lots of assumptions. It will only work if VI was left configured in a "standard" mode, with a 640x480-640x574 framebuffer. VI should be blanked; if it isn't, then TinyLoad will not blank it before launching the game so your screen will blink green for a split second as the game initializes VI. It has been tested to work correctly when launched by the Homebrew Channel in at least NTSC 480p and PAL interlaced modes. If these assumptions don't hold then the progress bar display will not work properly, but the rest of the loader should work fine.
  • TinyLoad does not perform _any_ patching of games. The lowmem video mode setting follows whatever video mode was left set by the application used to launch TinyLoad, except that PAL games are forced to PAL if NTSC is detected. This does not patch the game, it's merely the informative value in low memory; games are free to read SYSCONF/setting.txt and ignore it. I don't really care because I use 480p mode anyway. If you need more advanced options, just use Gecko OS.
  • Normally, game audio will not work correctly if launched via a loader that was initially launched via BootMii-boot2. This is a bug in libogc (it doesn't know how to initialize the DSP for the first time and leaves it in a broken state), and it affects anything running after the Wii was booted first into a libogc application, including the System Menu's loader. In other words, BootMii-boot2 -> HBC -> System Menu (or Gecko OS) -> Game may cause distorted audio. TinyLoad _does_ work, by resetting the audio hardware to let the game reinitialize it properly. So, BootMii-boot2 -> HBC -> TinyLoad -> Game will work fine. This ought to be worked around in a future release of HBC, at least. I'd suggest fixing libogc, but I know shagkur is just going to rip the proper code from the SDK again. Anyway, launching using TinyLoad will work fine as it contains the workaround.
  • TinyLoad will load the correct IOS as specified in the partition TMD. It does not support loading any other IOS.
  • TinyLoad will not install updates. Not having the right IOS for the game will probably result in a red error and reset about halfway through.

Why it's made

Because:

  • System Menu 4.2 forever broke region free via modchips.
  • I have a USA Wii which I regularly use with EUR games.
  • Gecko OS is somewhat annoying and recent versions are unstable (for me anyway).
  • I refuse to perform retarded firmware mods..
  • I autoboot HBC via BootMii-boot2 and using the System Menu takes longer anyway.

I also think that low-level apps that tightly hug the hardware are very educational, so why not. And hey, the code is pretty short, so you ought to be able to read it completely and learn how all this crazy Wii stuff "actually" works.

How it's made

TinyLoad is not compressed. The 4 kilobytes are raw code and data, plus the ELF header. The original loader was fit in 4 kilobytes by avoiding bloated libraries like libogc and instead using a small codebase pieced together from bits of the Twilight Hack and of HBC's reload stub. Extra features (SYSCONF reading, RTC reading, proper lowmem settings, VI stuff, progress bar, etc) were added by making space via a combination of increasingly complex compiler options, manual tweaks, and micro-optimization.

Nonetheless, there is almost no assembly code and the C code, though compact and odd at times, should be moderately readable. Just keep in mind that I deliberately leave old values floating around and/or use odd initializations in order to simplify the code. Also, I haven't commented most of it. If you're really interested, give me a shout and I'll see what I can do to make it more acceptable.

If you want some "real" fun, load the ELF in IDA. The function inlining and tail call goodness ought to provide tons of entertainment.

Known issues

Does not work with every Wii games, only a few game have been tested.

Online games doesn't work. Not sure why.

Changelog

2011-08 LetterBomb compatible build

  • LetterBomb compatible version. This fixes a bug and makes it work straight from LetterBomb, which lets you play imports while making no changes to your Wii. To use this, download LetterBomb without the "bundle" checkbox checked, and instead place this boot.elf on your SD card. Clicking on the red envelope will then boot whatever (original, but possibly imported) disc is inserted (the disc must be inserted first).

Credits

Program:

  • Copyright 2008-2009 Hector Martin (marcan).

Supporting code:

  • Copyright 2008-2009 Segher Boessenkool.
  • Copyright 2008-2009 Andre Heider (dhewg).
  • Copyright 2008 Nuke.

Awesome icon:

  • Copyright 2009 Freddy Leitner (drmr).

External links

Advertising: