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. Im not here to talk about those. Instead, Im going to talk about the Wiis software stack, and how it compares to other consoles.
The Wiis software architecture sucks.
If you look at lists of software updates for the PS3 or the XBox 360, youll 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 isnt 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, theyll 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 youve been following the Wii scene, you might be thinking, what about IOS? Indeed, Nintendos 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 theyve added many new features, but if you look closely, new IOS features do not operate when youre 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 youre playing Zelda and youll see that it doesnt work, because its 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 arent 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 thats a minor update that cant possibly affect games. Every time theyve added a new feature (for example, the recent Wii Speak support, or USB keyboard support, or USB mouse support) theyve 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 cant add any user-interface features to it.
Even worse - some things that should have been implemented in IOS arent. Like the Bluetooth stack and the Wii Remote code. Forget about any Bluetooth device support in older games - they couldnt pull off a VoIP feature, ever. The SD card filesystem code is implemented in the games, which means that they cant possibly add any code that uses SD card files, because two filesystem drivers cant be used on the same device at the same time. Some things, such as saving games to SD for titles that dont otherwise use the SD slot, are possible, but the changes needed to accomplish them would be so hacky and intrusive that I doubt theyre 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. Weve seen some changes but I doubt well see many more.
As a specific example, lets 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 theyre 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 wouldnt 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, theres 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, theres 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 wont admit that they screwed up their software by releasing such big new features and having them only work for newer games. Instead, theyll wait until Wii2 (or worse, Wii3), lag behind their competitors, and the features still wont work in backwards-compatibility mode.
All in all, the Wiis 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. Whats worse is that this will affect the compatibility mode of any future Wii successor. Just like DS titles wont get WPA support on the DSi, effectively making the DSis 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 wont be because they arent trying. Itll be because theyve killed their chances from the start.
http://hackmii.com/2009/02/why-the-wii-will-never-get-any-better/