A lot of stuff has happened lately, and I haven’t written in a while. VC piracy has (as expected) flourished, and we’re still waiting to see what form Nintendo’s reaction will take — at least, I don’t really feel like releasing any code until I see what happens.
So, I’ve stepped back and am working on another problem — well, I was sort of forced to.
Bricks as seen in the “scene” come in two forms — “full-brick” and “semi-brick”. Both are the result of installing updated System Menus from discs that came from other regions. (Tsk, tsk.)
A “full-brick” Wii displays an Opera error message instead of the “warning” screen when the Wii boots — it does not even check the disc drive for a disc before displaying this, meaning it is impossible to fix this using software.
A “semi-brick” Wii is similar, but it allows you to boot the system to the main menu, and play games, etc. However, you can’t get into the Settings menu (to enable WiFi, update the software, etc), because when you do, you are presented with a similar screen to above (but I can’t find any pics online) — however, instead of ScreenSave.html, it’s Settings.html.
[Thanks to H. for the below picture:]
Let’s take a look at why this happens. What’s this ScreenSave.html?
If you ever have the fun opportunity to select “Format System Memory” when the Wii boots up, you’ll be presented with this screen — *before* the “warning” screen:
After this screen, you are then given a few screens that ask you to select a region, a console name, and some other settings — one of which is this screen:
I don’t have a picture handy, but before you are shown this screen, you get one with a message that says “Your Wii console has a screen burn-in reduction feature. To use it, activate it in Wii Settings.”
After you finish this series of configuration steps, it will finally show you the “warning” screen. This is notable because this all happens before the warning screen loads.
These html files are all stored inside an archive inside the System Menu content storage. Here’s the stupid part:
Each region has its own version of the System Menu (1-2). For example, the newest version of the system menu available is v. 288 (NTSC/J), v.289 (NTSC/U), v.290 (PAL). The only difference between those three versions is two different files — the main executable for the menu (a .DOL file, more or less) and an ARC archive that stores compressed versions of the HTML / image resources.
All of this is fine and good, but why put them in separately named directories? (E.g. EU/EU/GER/Setup/ScreenSave.html above)? The path name could always be the same because there are different files for each version.
So, there’s a specific path that the graphics need to sit at. So, you’d think they’d hard-code a pathname like that into the code, right? No…
The code’s pretty hard to tease apart, but they seem to be trying to determine the system region from the SYSCONF file, and then building up a pathname to load like so: sprintf(filename, “html/%s2/iplsetting.ash/%s/%s/ENG/Setup/ScreenSave.html”, region, region, region). This is so silly, because if they had hard-coded the path then the system would have booted just fine.
The code does this in slightly different ways in several places — this has to somehow distinguish the semi-brick case from the full-brick case, although I don’t think that anyone really understands why some people end up with one and not the other.
Still, a semi-brick is better, because it will still boot discs, meaning that there is still some hope for a fix. If you can find a game with a newer version of the system menu in its update partition, then you can run it, and it will automagically fix things. However, this requires a wait of several months until one comes out.
A friend came and asked me if I could help him figure out how to fix a “semi-brick” Wii, manually. All that needs to happen in this case is we need to install a newer version of the System Menu WAD. There are a number of ways to do this, and unfortunately I picked the wrong one.
Marcan had written some test code that can manually load the System Menu, and I modified it to try to patch the System Menu enough to get into the Settings screen by correcting the pathname. My theory was that then we could use that to have the Wii update itself using its own internal code. This had to be safest, right?
Well, now we have:
Looks like I just bricked a Wii. The owner was kind enough to send me the Wii so I can try to unbrick it — this is not currently possible, but I think we now know enough to do it using an external NAND flash programmer and a bunch of software which I need to write.
The bright side of this, if there is one, is that I’ve been wanting to address the “bricking problem” for a long time, and now I have a perfect test subject to work on.
More about my plan of attack in my next post.
56 responses so far ↓
1 boot0 // May 31, 2008 at 5:26 am
[…] This post is part of a several-part series on fixing a “bricked“ Wii: […]
2 amoxiflash // Jun 1, 2008 at 3:25 am
[…] A friend whose Wii I bricked was kind enough to hook me up with an Infectus chip to use as a NAND Flash programmer in my UnbrickMii project. I’ve spent the last couple of weeks just trying to get it to work, and have run into several, um, speedbumps along the way. […]
3 Tita // Jun 12, 2008 at 8:15 am
my wii turned to semi-brick after accidentaly pushed register button on wii number. My wii setting shows an error like you describe it “semi-brick”. Need help
4 Wii Semi-Brick | Nineteen Labs // Jun 16, 2008 at 9:12 pm
[…] What is Wii Semi-Brick. Guys from hackmii.com explain it, the result of installing updated System Menus from discs that came from other regions. Semi-brick displays an Opera error message, allows you to boot the system to the main menu, and play games, etc. However, you can’t get into the Settings menu (to enable WiFi, update the software, etc), because when you do, you are presented an Opera error message. You can read their explanation here […]
5 Reow // Jul 29, 2008 at 9:32 pm
“If you can find a game with a newer version of the system menu in its update partition, then you can run it, and it will automagically fix things.”
I’m just guessing here, but this probably works by comparing version strings right? e.g. your system has version 1.0, the disk has version 1.1 so it installs. if you have 1.1 or 1.2, it won’t install.
If this is the case, is it possible to edit the version string in an existing version (if your Wii supports burned disks)? e.g. download/load a game with the latest version of the firmware for your correct region onto your PC. Modify the version string that says 1.1 so that it says 1.2. Burn the game.
The reason that I am asking is because I am considering the following scenario… You have version 1.0 on your system, you play an overseas game with version 1.1 included and your console gets semi-bricked. You perform the above process so that you now have a game that claims to have firmware version 1.2 (it’s really just 1.1), you play this and your console gets unbricked.
Ignore for the moment that when you want to install version 1.2 you are going to have some issues – I’m sure unbricking your console a few months early is worth the extra effort. Is the above plausible or simply too difficult?
6 business » Blog Archive » Wii Semi-Brick // Sep 6, 2008 at 9:02 am
[…] What is Wii Semi-Brick?. Guys from hackmii.com explain it, the result of installing updated System Menus from discs that came from other regions. Semi-brick displays an Opera error message, allows you to boot the system to the main menu, and play games, etc. However, you can’t get into the Settings menu (to enable WiFi, update the software, etc), because when you do, you are presented an Opera error message. You can read their explanation here […]
You must log in to post a comment.