HackMii

Notes from inside your Wii

HackMii header image 2

Why the Wii will never get better

February 28th, 2009 by marcan · 68 Comments

Yes, this is another Wii rant. There are plenty of other articles talking about the poor recent game offerings, the hardware limitations, and the primitive online play. I’m not here to talk about those. Instead, I’m going to talk about the Wii’s software stack, and how it compares to other consoles.

The Wii’s software architecture sucks.

If you look at lists of software updates for the PS3 or the XBox 360, you’ll find things such as PS3 update 2.40, which made XMB available in-game, or XBox 360 update 2.0.7357.0, which added the New XBox Experience, among many smaller updates are stability fixes, new peripheral support, and new features like in-game screenshots. A large amount of the features affect or improve the in-game experience.

Meanwhile, the Wii got all of:

  • Things, such as copying saves to SD, which should have been there from the start
  • Support for new features for new games, with zero improvements for any games already released (USB keyboards, WiiSpeak, etc).
  • Updates to built-in channels (WiiShop, etc)
  • Wii menu or messageboard tweaks, like moving channels or, get this, a clock.
  • Security updates, or their failed attempts at stopping homebrew.

This isn’t a coincidence. As it turns out, Nintendo chose not to have any operating system or common code at all running on the Broadway CPU. When you run a game, everything that shows up on your screen, ever, is being loaded from that spinning polycarbonate disc. And there are no mechanisms for anything else to run on that CPU: no update infrastructure, no Home Menu updates, nothing. If they ever want to have a “hypervisor” run above games, they’ll need to get a new CPU with full-blown virtualization capability (or an emulator), because games assume they have direct access to the CPU and most of the hardware.

If you’ve been following the Wii scene, you might be thinking, “what about IOS?” Indeed, Nintendo’s security and I/O Operating System runs alongside games (on a separate CPU built in to the Hollywood chipset) and it is updated as part of system updates. It includes some important bits and pieces like some peripheral drivers. However, as it turns out, Nintendo has decided that every new feature will be developed as a separate fork. Your Wii contains many IOS versions, and the older have never been updated except for security reasons (to fix our exploits). Not that they’ve added many new features, but if you look closely, new IOS features do not operate when you’re playing older games. This includes any updates to the WiiConnect24 downloads code, and even some minor things like the “slot LED blinks when you eject a disc” feature – try it when you’re playing Zelda and you’ll see that it doesn’t work, because it’s using the very old IOS9.

There are 23 IOS versions installed with current updates (this is also wasting the scarce 512MB internal memory!). Any new feature that they want to use in older games would have to be retroactively and individually added to each version, and it could create compatibility concerns because the interfaces with IOS functions aren’t all that stable either. Just doing these updates would cost them an immense amount of effort – it took them well over half a year to fix the fakesigning exploit and ship the IOS updates for all 23 versions, and that’s a minor update that can’t possibly affect games. Every time they’ve added a new feature (for example, the recent Wii Speak support, or USB keyboard support, or USB mouse support) they’ve just made a new fork of IOS for it. And IOS is limited to what it already handles – the ARM CPU that it runs on has no access to the graphics capabilities of the Wii (nor is it fast enough anyway – it has no floating point capability and it is a lot slower than the Broadway), so they can’t add any user-interface features to it.

Even worse – some things that should have been implemented in IOS aren’t. Like the Bluetooth stack and the Wii Remote code. Forget about any Bluetooth device support in older games – they couldn’t pull off a VoIP feature, ever. The SD card filesystem code is implemented in the games, which means that they can’t possibly add any code that uses SD card files, because two filesystem drivers can’t be used on the same device at the same time. Some things, such as saving games to SD for titles that don’t otherwise use the SD slot, are possible, but the changes needed to accomplish them would be so hacky and intrusive that I doubt they’re ever going to happen. One of the few things they can update with relative ease is networking (because the TCP/IP stack runs in IOS), but even then they still need to touch all IOS variants to fix it retroactively in older games. We’ve seen some changes but I doubt we’ll see many more.

As a specific example, let’s look at the much-discussed future ability to load Virtual Console and WiiWare titles from an SD card (seriously, what the hell were they thinking with 512MB of internal storage and no sane infrastructure to ever expand it externally?) There are three possible solutions to get this to work:

  1. Add FAT filesystem code to IOS retroactively, disabling any SD access for titles that launch from SD
  2. Add FAT filesystem code to IOS retroactively and push title updates for everything that uses SD, to remove the in-title FAT code and replace it with a new interface to IOS
  3. Just fake it and transparently copy titles to the Wii system memory when you want to launch them, causing more Flash wear and tear and longer launching times

Chances are they’re going to go for number 3. And the only reason 1. and 2. exist is because downloadable content access is implemented through a unified “application security” subsystem, which forced them to define a sort-of-standard interface for it. They wouldn’t have done it otherwise.

While other consoles get firmware updates, new peripheral support, bugfixes, and even major updates like the XBox New Experience, pretty much everything on the Wii will remain just as it is now. The best Nintendo can do is update the Wii Menu, but once you get into a game, there’s nothing it can do. Forget about an improved Home Menu. Forget about any changes to online gaming beyond minor server-side tweaks. A unified friends system to avoid having to enter friend codes for every game? Not going to happen. Bad game bugs? Tough luck, there’s no patching system (remember the Zelda issue?) Some future proper online support with social features, like the other consoles have? Will never work with older games. Worse, Nintendo are really proud of themselves, so they won’t admit that they screwed up their software by releasing such big new features and having them only work for newer games. Instead, they’ll wait until Wii2 (or worse, Wii3), lag behind their competitors, and the features still won’t work in backwards-compatibility mode.

All in all, the Wii’s software stack is designed with little to no future proofing. There are basically zero provisions for any future updates; even obvious things like new storage devices or game patches. What’s worse is that this will affect the compatibility mode of any future Wii successor. Just like DS titles won’t get WPA support on the DSi, effectively making the DSi’s WPA mode useless if you ever want to use DS titles on-line. The DS WiFi drivers and configuration stack are built in to every game.

Remember, when Nintendo fails to deliver new Wii features, it won’t be because they aren’t trying. It’ll be because they’ve killed their chances from the start.

Tags: Wii

68 responses so far ↓

  • 1 someone // Mar 3, 2009 at 5:15 am

    @ ether2802 :

    I think Nintendo will have to take steps back towards the ‘hardcore’ (ugh).

    Firstly, grandma’s not going to be interested in the Wii 2 as the Wii does everything she wants. So the Wii 2 will necessarily have to have improved graphics, sound, storage, and online community so the gamers will want to upgrade to the Wii 2. If they do that, it’s only going to be a viable purchase if it has backwards compatibility too, for the rest of the family (grandma and Wii Sports) and even for the odd gem like Mario Galaxy/Kart and Metroid Prime. This is going to force them into designing things better because kludges to support the new features on top of the current system aren’t going to work.

    Secondly, so that the gamers will want to buy a Wii 2, they will need to be drip-fed updates to the Wii to keep them at least fairly interested in the console. Media player channels and better online messaging/voice/friend lists from the Wii Menu aren’t impossible even under the current architecture. If Nintendo have an eye to the future they’re going to be slowly improving things in the lead up to the launch of the Wii 2.

    As the gamers are more into homebrew than grandma, homebrew can be used to build up demand for new features and push Nintendo into developing official versions (even though they’d never admit it).

    Or am I being too optimistic?

  • 2 Red_Breast // Mar 3, 2009 at 1:59 pm

    As one of the (probably) older people here all of this comes as no surprise to me. It should come as no surprise to anybody who has followed Nintendo. The Wii is typical of every other Ninty console. I don’t know you’re history regarding consoles Marcan but I get the impression you’re surprised by all this.
    There’s a lot of talk in the posts about what people will want next. These new gamers have a Wii but look what the other 2 can do. Nintendo got there sales though.
    Older people like me who got it for the new Metroid and Resi4 WiiEd. and now uses it for ScummVM. Got my sale.
    But remember there will be new gamers. Kids who have just started school. In a few years they will be the buyers of Wii2. Why? It has the latest Mario etc. And the parents will like the no online options so their kids are safe. Nintendo will have their sales.
    I’m not saying it’s good or healthy or right. I’m also not saying that this strategy will serve Ninty forever.
    But it has for a while so why change.

  • 3 Nyoronoru // Mar 3, 2009 at 4:38 pm

    Reading this article has convinced me to get an Xbox 360.

    I thought Nintendo was just dragging their feet before. Now that I know that no improvements are ever coming, I might as well invest somewhere that gets me an actual return.

  • 4 HenshinMijin // Mar 3, 2009 at 11:09 pm

    SERIOUSLY! Nintendo is a GOD among men!
    They did it. They really did it!
    When you can make crappy, but not entirely 100% crappy hardware, convince, kids, their parents, and their parents parents that they need it a Wii to live, then you are the undisputed business boss! And THEN you and I, we have all these NES and SNES ROMS on are computer. Well, imagine if we sold our free ROMS to idiots who didn’t know what VG emulation or homebrew is… Well, Ha! That’s what Nintendo is doing too! Ahh.. I love Nintendo. They REALLY are geniuses because they convinced me, us, to buy they’re product. Soo.. umm.. to all the HackMii crew, please for us who have Wii, please help ease our pain by breathing more life and cool things into our consoles. Please and thank you.

    fo shizzle
    ~K Dizzle™

  • 5 Hugh Isaacs II // Mar 5, 2009 at 6:05 am

    After reading through the comments, etc…

    I get the feeling that Nintendo saw their errors with the existing Wii architecture and that’s why the DSi has a better Home menu.

    I know it sounds stupid to say and all, but when you look at it, Nintendos demographic won’t care about in game music or anything like that even if they’re into hardcore games.

    But at least with the Home menu, features like sending messages shouldn’t be too much of a problem.

    And Marcan despite what you think, I get the feeling they’re redesigning the firmware as we speak for future titles, leaving the files for old titles as is.

    Possibly even changing the way the Home menu works in favor of this.

    I mean when you look at it, the casual crowd isn’t loyal to any console, and their next bet will probably be the XBox 360 due to it’s price point and focus on online gaming, encouraging interaction with friends.

    Because of this we can expect Nintendo to focus on playing catch up, creating some new service for the Wii that’ll probably include a new channel (or an update to an old one) and something a bit original to go with it.

    Yea it isn’t exactly what you’d expect, but at the same time with the economy in it’s state and Nintendos money not extending as far as Microsoft or Sonys, they kinda have no choice.

  • 6 ethd // Mar 8, 2009 at 8:22 pm

    I love Nintendo, and probably always will, regardless of this. However, Microsoft is catching up and may pass in love factor if Nintendo doesn’t get their asses in gear. After all, it won’t be long before a Nextbox and PlayStation 4 come out and they’re probably going to have a controller designed for the casual crowd with motion sensing and infrared and all that gimmicky stuff. Then what will Nintendo do? What can they do? If they were smart, they’d join the crowd and do what others are doing (stuff like better hardware, hard drives, a traditional controller that doesn’t suck and isn’t from the previous generation, etc.) but add the little bit of Nintendo innovation they always have added.
    That’s one hand.
    On the other hand, they can make a relatively vulnerable system that’s simple to hack and makes homebrew easy to access. See, the PS3 hasn’t been hacked and the Xbox 360 is in its infancy as far as homebrew goes. If Nintendo followed the crowd, we’d probably say “good-bye” to homebrew.
    Unless we had marcan and bushing, of course 😛

  • 7 11rcombs // Mar 14, 2009 at 2:32 pm

    Why emulate when you can just rewrite the wii’s game code to run natively? isn’t that pretty much what they did with the Wii/GameCube?

  • 8 HyperHacker // Mar 15, 2009 at 9:56 am

    You know, Nintendo may not be able to improve their architecture, but we can improve ours. Using signing bugs and/or BootMii we can run our own IOS, and much of the Starlet is now documented on Wiibrew. We could write a homebrew IOS, that would automatically be loaded and used by libOGC.

    Writing our own IOS means we could do it the way Nintendo should have, and thus be able implement nice things like new devices (Kwiirk just released a hacked IOS with USB2 support), in-game menus, etc that would work in all homebrew apps (as long as they used a recent enough version of libOGC), while not breaking compatibility with older/official apps.

    If we passed it pointers to our display lists and/or frame buffers, and notified it when we were about to execute/swap them, it’d even be able to draw to the screen.

    The only big downside I can see to this is you’d have to be able to install and run a custom IOS, which would require at least patching current IOSes to remove the signature check, and perhaps other patches on new consoles.

  • 9 marcan // Mar 15, 2009 at 12:10 pm

    @HyperHacker:

    You just described what BootMii is about. Said “homebrew IOS” already exists, and even recently got a name: Mini (Mini Is Not IOS). It’s the Starlet code that will ship with BootMii.

  • 10 techni.livejournal.com/ // Mar 21, 2009 at 12:28 am

    I find it hilarious some Nintendo fanboys are defending Nintendo’s actions (ie: The idiot agreeing with ‘Gamers don’t want online’) and even saying Wii is better because of these stupid, crippling design decisions

  • 11 techni.livejournal.com/ // Mar 21, 2009 at 12:31 am

    PSP’s OS is more advanced.

  • 12 peterjung // Mar 22, 2009 at 3:41 am

    Firmware 3.5K

    I now have this on one of my Korean wiis. I have been unable to get the Twilight Hack to work and install homebrew channel on a second wii I bought several weeks ago originally with 3.3K firmware. However, previously I was able to install the Homebrew Channel on a Korean wii bought late last year, also with 3.3K firmware.

    It seems that although both Korean wii’s had 3.3K, something had been changed in the more recently shipped wii’s.

    Today I updated to 3.5k and tried the Twilight Hack for firmware 3.4. The result was:

    Loading Installation Data…
    Checking System …
    I’m running under IOS21 2.7
    Error checking System Menu Version
    Press Accept or Cancel to exit to the Wii System Menu.

    Now strangely, this is exactly the same result I got when previously trying to run the Twilight Hack on the later shpped wii with 3.3K?

    Could it be that Nintendo found another way to block installation of the HBC with later version of 3.3K as well as on 3.5k.

    Anyway, is there any possibility that a new version of the twilight hack for firmware 3.5K will be devised? Or another way of installing HBC on 3.5K firmware?

  • 13 metayoshi // Mar 26, 2009 at 8:02 pm

    Haha, I love how you guessed perfectly exactly what Nintendo’s storage “solution” would be about a month before Nintendo released it. I mean… It works pretty well, according to the testimonials I’ve heard and read, but it seriously shows how flawed Nintendo’s little system is.

  • 14 godrik // Mar 28, 2009 at 10:39 am

    Hi, I will have some questions about the (absent) runtime of the wii. Basically the problem is that when the game is loaded, there is no longer any firmware/OS code running except the IOS.
    This means drivers are defined by games probably through static library.

    There should not be hundreds version of these libraries so it should be easy to spot them in the code. Then could we strip them to replace them at load time by some other versions ?
    This could allow to correct bug in the libraries. Even more, we could perhaps use those call as entry point in a non-preemptive kernel. It would not be as cool as a classical operating system, but it could be nice.

    Of course, this assume that all the hardware operations are performed inside library calls and not by changing a register somewhere.

    More thought. There could be a new operating systems for future games. I believe Nintendo could change the wiimenu to behave like a classical OS. If you boot an old game, you trash everything as before. If you boot a newer game, you run it inside the OS. It means that old games would stay as they are, but future games could benefit from the OS improvement. (I am not saying they will do it. I am staying hypothetical.)

    My next comments would be about linux. (I believe you know that but). There is currently a version of linux that runs on the wii called whiite (there is also a version of the geexbox distribution that I believe run on the same kernel). whiite seems to be a fork (or a patch) over linux-gc to boot on the wii. Some questions:
    -Is whiite the good starting point to build a wii version of linux ?
    -there is no wifi support under whiite. A driver would be the best solution but could we use the TCP/IP stack of the wii in IOS to workaround the lack of a wifi driver ?

  • 15 emailtoid.net/i/f63b91e0/… // Apr 1, 2009 at 1:29 pm

    After seeing your 1st march post, I just had a random thought. Maybe nintendo could implent some sort of learning system, at first startup you choose “Easy”, “Medium” and “Expert” (or maybe better names for the system). If you choose either Easy or Medium it would ask after 1-2 weeks if you want to raise the difficulty of the system. Or maybe a system based on which persons use the systems are better, like it asks questions “How many people are you in your family?”, “Whats your age?” (45-year old grandma probably don’t know as much as her 24-year old son, or whatever). Now that sounds great, eh! That way you can have different “users” with different settings and gamesaves, custom channel positions, own purchased channels(but be able to share them with other users). How about that? I’d love to see this kinda system, it would really be different compared to the other two big companies. However I would probably not use it anyway, after we moved I got the Wii in my room instead of the living room 🙂

  • 16 me.yahoo.com/nande_kudas… // Aug 14, 2009 at 8:09 pm

    well, first i must say that i always liked what nintendo did.
    but this has shine a lot of light to me, the least i can say is thanks.
    this is truly instructive and so intresting, thanks for writing all the details 😀

  • 17 emailtoid.net/i/13ddb761/… // Aug 22, 2009 at 1:25 pm

    “(slapping the old processor on the board doesn’t count)”

    Yes it does! That’s the best method! That gives you 99.999% compatibility! Any system using that is not “lazily” slapped on. What do you want? An emulator that barely works?

  • 18 emailtoid.net/i/13ddb761/… // Aug 22, 2009 at 1:59 pm

    “You can’t blame Nintendo for the Wii.”

    Yes you can. They chose making money over making a quality system, and as a result crippled this entire generation of systems. Now the other 2 system makers are crawling over themselves to copy Wii’s crappy “replace pressing X to swing sword with wave wand to swing sword”

    I used to love Nintendo, but the Wii/DS has ruined them for me, and is ruining the real gaming systems

You must log in to post a comment.