README 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. TinyLoad v0.2
  2. A Wii disc game loader in 4096 bytes
  3. ====================================
  4. What?
  5. =====
  6. TinyLoad is a simple original Wii game launcher. You run it, it launches
  7. whatever's inserted into the drive. Simple. It ignores game regions, so it's
  8. region-free. It won't install updates. It won't load burned copies. There are no
  9. controls or settings.
  10. The user interface shows two things: progress, and error status. A white bar
  11. across the bottom of the screen shows the current (rough) progress. If an error
  12. is detected, a portion of the top of the screen will turn red. It will then
  13. attempt to launch The Homebrew Channel (only applies to recent versions with the
  14. JODI Title ID). If this fails then it will simply hang.
  15. If the launcher freezes with the progress bar visible and no red error box, then
  16. you've probably hit a bug. Try the debug version if you have a USB Gecko.
  17. If it freezes with a black screen after the progress bar has reached its
  18. endpoint and disappeared, then the game itself is freezing.
  19. I obviously have only tested this with a few games. Chances are it doesn't work
  20. with every Wii game out there.
  21. The debug version requires a USB Gecko and shows debug messages over it.
  22. Notes:
  23. - TinyLoad sets the PPC timebase correctly according to your Wii's RTC. This
  24. fixes date/time issues in games.
  25. - The video code makes lots of assumptions. It will only work if VI was left
  26. configured in a "standard" mode, with a 640x480-640x574 framebuffer. VI should
  27. be blanked; if it isn't, then TinyLoad will not blank it before launching
  28. the game so your screen will blink green for a split second as the game
  29. initializes VI. It has been tested to work correctly when launched by the
  30. Homebrew Channel in at least NTSC 480p and PAL interlaced modes. If these
  31. assumptions don't hold then the progress bar display will not work properly,
  32. but the rest of the loader should work fine.
  33. - TinyLoad does not perform _any_ patching of games. The lowmem video mode
  34. setting follows whatever video mode was left set by the application used to
  35. launch TinyLoad, except that PAL games are forced to PAL if NTSC is detected.
  36. This does not patch the game, it's merely the informative value in low memory;
  37. games are free to read SYSCONF/setting.txt and ignore it. I don't really care
  38. because I use 480p mode anyway. If you need more advanced options, just use
  39. Gecko OS.
  40. - Normally, game audio will not work correctly if launched via a loader that
  41. was initially launched via BootMii-boot2. This is a bug in libogc (it doesn't
  42. know how to initialize the DSP for the first time and leaves it in a broken
  43. state), and it affects anything running after the Wii was booted first into
  44. a libogc application, including the System Menu's loader. In other words,
  45. BootMii-boot2 -> HBC -> System Menu (or Gecko OS) -> Game may cause distorted
  46. audio. TinyLoad _does_ work, by resetting the audio hardware to let the game
  47. reinitialize it properly. So, BootMii-boot2 -> HBC -> TinyLoad -> Game will
  48. work fine. This ought to be worked around in a future release of HBC, at
  49. least. I'd suggest fixing libogc, but I know shagkur is just going to rip the
  50. proper code from the SDK again. Anyway, launching using TinyLoad will work
  51. fine as it contains the workaround.
  52. - TinyLoad will load the correct IOS as specified in the partition TMD. It does
  53. not support loading any other IOS.
  54. - TinyLoad will not install updates. Not having the right IOS for the game will
  55. probably result in a red error and reset about halfway through.
  56. Broken stuff:
  57. - I don't think online games work. Not sure why (I do copy the TitleID to the
  58. proper spot, I think). If it works for you, let me know. Likewise, if you know
  59. what the problem is or you can fix it, please let me know.
  60. Who?
  61. ====
  62. Program:
  63. Copyright 2008-2009 Hector Martin (marcan) <marcan@marcansoft.com>
  64. Supporting code:
  65. Copyright 2008-2009 Segher Boessenkool <segher@kernel.crashing.org>
  66. Copyright 2008-2009 Andre Heider (dhewg) <dhewg@wiibrew.org>
  67. Copyright 2008 Nuke <wiinuke@gmail.com>
  68. Awesome icon:
  69. Copyright 2009 Freddy Leitner (drmr)
  70. This code is licensed to you under the terms of the GNU GPL, version 2;
  71. see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
  72. The icon is licensed under CC-BY-NC-SA 3.0:
  73. http://creativecommons.org/licenses/by-nc-sa/3.0/
  74. Why?
  75. ====
  76. Because:
  77. - System Menu 4.2 forever broke region free via modchips
  78. - I have a USA Wii which I regularly use with EUR games
  79. - Gecko OS is somewhat annoying and recent versions are unstable (for me anyway)
  80. - I refuse to perform retarded firmware mods.
  81. - I autoboot HBC via BootMii-boot2 and using the System Menu takes longer
  82. anyway.
  83. I also think that low-level apps that tightly hug the hardware are very
  84. educational, so why not. And hey, the code is pretty short, so you ought to be
  85. able to read it completely and learn how all this crazy Wii stuff *actually*
  86. works :-)
  87. How?
  88. ====
  89. TinyLoad is not compressed. The 4 kilobytes are raw code and data, plus the ELF
  90. header. The original loader was fit in 4 kilobytes by avoiding bloated libraries
  91. like libogc and instead using a small codebase pieced together from bits of the
  92. Twilight Hack and of HBC's reload stub. Extra features (SYSCONF reading, RTC
  93. reading, proper lowmem settings, VI stuff, progress bar, etc) were added by
  94. making space via a combination of increasingly complex compiler options, manual
  95. tweaks, and micro-optimization.
  96. Nonetheless, there is almost no assembly code and the C code, though compact and
  97. odd at times, should be moderately readable. Just keep in mind that I
  98. deliberately leave old values floating around and/or use odd initializations in
  99. order to simplify the code. Also, I haven't commented most of it. If you're
  100. really interested, give me a shout and I'll see what I can do to make it more
  101. acceptable.
  102. If you want some *real* fun, load the ELF in IDA. The function inlining and tail
  103. call goodness ought to provide tons of entertainment.
  104. Where?
  105. ======
  106. http://wiibrew.org/TinyLoad
  107. http://marcansoft.com/blog/