Hacker News new | past | comments | ask | show | jobs | submit login
Wind Waker Graphics Analysis (medium.com)
537 points by ingve on Nov 11, 2016 | hide | past | web | favorite | 46 comments

( Copying my comment from an earlier post: https://news.ycombinator.com/item?id=12921949 )

One tiny thing that might help in your analysis: Nintendo accidentally included all the symbol names and locations on the Wind Waker disc in a file called "framework.map".

Doing some basic demangling on the CodeWarriors names gives you C++ classes and methods:


The "sea" animation is controlled by "daSea" -- "da" meaning "dynamic actor" in Nintendo's naming terminology.

It's extremely unlikely they used texture distortion for the sea effect, since the GPU they used didn't have fragment shaders -- the only method of texture warping is INDTEXMTX, which was only used for the heat effects in Dragon Roost Cavern.

They probably modified UVs directly on their triangular sea mesh.

Smoke effects and such use their in-house particle engine, "JPA".

Technically it is the case that the given fragment shader is doing the same thing as direct UV modification. It doesn't really change the fact that it's texture distortion, it's just that the fragment shader is capable of doing it on a per-pixel basi.

It's a common misconception that the Gamecube doesn't have fragment shaders. The GPU (called the TEV) is almost a straight implementation of DirectX's ps1.0, the same as a GeForce3, with a few extras added.

At my old company I wrote an assembler to read text source and assemble the instructions into TEV format.

I'm aware of TEVs -- I did write http://magcius.github.io/bmdview.js/bmdview.html after all, which compiles TEV back into GL shaders :)

My point was more that TEVs can't modify texture coordinates, since texcoordgen happens before the TEV stage. TEVs only specify how to blend vertex colors, texture samples, game-set registers and lighting results together using configurable formulas.

It's been a while, but I seem to remember there was an additional indirect texture unit for doing just this kind of stuff.

He mentioned this already:

> the only method of texture warping is INDTEXMTX, which was only used for the heat effects in Dragon Roost Cavern

I agree. I wrote a large comment about this over on reddit.


Do any other games have this file included?

Twilight Princess and Pikmin have similar files. I think there are a few other games which have them, but I can't remember which.

I was deeply into Nintendo games in the late 90s leading up to Wind Waker's release. I remember after it was announced that so many people were deeply disappointed in these "kiddy" graphics.

Remember that as far as the major releases go it was released in 2002 after Ocarina of Time in 1998 (and a sequel using the same engine in 2000).

People wanted a "real" Zelda game with "real" graphics, like what became Twilight Princess in 2006, whose graphics are a logical follow-up to Ocarina of Time.

It's funny how history turns out, now Wind Waker is widely lauded for its graphics, and it looks much better than the likes of Ocarina of Time or Twilight Princess.

It's a fantastic example of how Nintendo is still a company that dares to experiment, even with their most wildly successful game franchises. That hasn't always worked out, but we've gotten amazing innovative games like Wind Waker as a result.

It is, I think, my favourite Zelda game --- it looks superb, the characters work, the story's interesting (even Ganon actually comes across as a bit sympathetic!), fascinating dungeons, the world is endless fun to explore... I just kinda wish they'd finished it: they way the last part of the game devolves into a series of treasure hunts was disappointing. I gather they ran out of money and there was supposed to be another round of dungeons.

There are also some epic design failures: the biggest one, to me, is that the games give you the boat before it's ready to let you explore. Instead it walls off big chunks of the world to railroad you into going to Dragon Roost Mountain. As soon as I got the boat, of course, I headed straight for the nearest island to see what was there, hit a wall and was turned back. I found that showing me the open world and then not preventing me from going there, and in such a clumsy manner, was very disappointing. I think they'd have done better to have simply moved you to the island outside your control, and only let you take command of the boat once you pick up the baton.

A lot of what gives the game its character was the seamless loading between islands. Twighlight Princess, which was a perfectly decent game, seemed much smaller to me because of the endless constrained environments and loading screens.

Meanwhile, I still haven't finished Skyward Sword.

I remember the backlash, and it was bizarre, especially given this was the first Zelda game that gave us _some_ semblance of continuity. But I also do remember a Dolphin demo reel showing a more realistic Zelda that probably made people think that's where the next game was going, so people were naturally disappointed when their expectations were undermined.

> the first Zelda game that gave us _some_ semblance of continuity

What continuity is there in WW? Nothing jumps to mind, especially when the previous game (Majora's Mask) was essentially a direct sequel to OOT in comparison.

At one point you visit Hyrule Castle and there are allusions to Ocarina of Time. I don't really remember the details but it is made clear in-game that player Link is one in a series of Links.

Some of this is from memory, but it takes place on a timeline where Ganondorf was sealed. Then Hyrule was flooded to prevent him from ever being unsealed.

The main character is dressed as Link because children dress as the great hero once a year.

That's true! I'd completely forgotten about MM. It always felt like a "mod" of sorts to OOT.

Nintendo also stoked the flames by releasing a "demo" video to preview the GameCube that featured a more realistic Link.


People thought that this would be the next Zelda game.

You couldn't be more right. I seem to recall people being really grumpy about Majora's Mask for being "weird" and not very Zelda-y, and now it frequently appears in "best game ever" lists.

I have to agree, though-- I replay Ocarina all the time, but every time I try to replay Majora's Mask, I get frustrated and quit a few hours in.

Try the 3DS port. I ground through the N64 version when it was first released, due to a sense of "I paid for this, so I'm gonna darn well finish it," but the 3DS version adds hints/accessibility that make it a lot more enjoyable.

Yep, that's what happened to me the few times I tried to pick it up. I'm a huge Zelda fan but MM just feels like a chore. I really don't like the whole calendar-based thing, having to do the same things multiple times, having to revisit the same location over and over again. It kills the sense of progress that makes other Zelda games great. By far my least favorite...

I was strongly in the camp which loved the cell-shaded graphics. It's a shame that the complainers "won" because it clearly limited Nintendo's creativity for later games.

Nintendo are at their best when they're unconstrained.

Hah, yes, I remember everyone complaining about "Celda".

I still think Wind Waker is one of the most visually appealing games Nintendo has ever released.

I say 'one of' but I can't actually think of anything better at the moment.

Yoshi's Island?

Yoshi's Island, for me, is my favorite Nintendo game graphically, followed by, in no particular order, Metroid Prime, Paper Mario, and Wind Waker.

But it's also my favorite when it comes to gameplay and audio. I don't think I've played a platformer all the way through as often as I've played through Yoshi's Island, and its music still randomly pops into my head quite regularly.

Still haven't played it for that reason. Then again, I never bought a game cube.

Dolphin Emulator + Wind Waker ROM = HD experience you never had

If you have a Wii U there's a remastered version available for that.

The compensation of the sea motion reminds me of how Zelda Link's Awakening sea intro sequence was done on the Game Boy. It's suprising how two sea-themed games can make use of the same techniques accross vastly different hardware :)

Here with some animated gifs: http://kemenaran.winosx.com/posts/links-awakening-rendering-... (disclaimer: I'm the author).

That link is dead here... this works: http://kzone.winosx.com/posts/links-awakening-rendering-the-...

Edit: after reading said post, it's a great explanation of the techniques used in Link's Awakening's intro. That game looked gorgeous on the B/W Gameboy, it's cool to actually understand how they managed to pull it out technically.

That link is not dead, just fainted on the shore.

> For the ultimate experience, I’d recommend listening to the incredibly uplifting soundtrack while reading on…

In particular, skip ahead to 33:54 to start with the "Dawn" fanfare followed by Wind Waker's fantastic Ocean sailing song.


Good work. Wind Waker is a very beautiful game. I like that you discovered that using the boat as the origin point for the ocean/waves makes the rest of elevation computation that much easier.

The author mentions "two types of ocean." What's the other type? I don't recall.

The flat surface with waves that look a bit like ^ but wider and curvier. Seen close to major islands like Windfall and the Forsaken Fortress

Example: http://zeldawiki.org/File:Zeldawindwaker01.jpg

Great relaxing gfx-nerd chaser for a terrible week.

Here's a post on Polycount that analyzes other parts of the game:


Does anyone know of any other threejs talk/walkthrough posts? I love watching the development of things with it, like this video:


Learningthreejs.com has lots.

It'd be neat to compare this with what the game is actually doing (maybe using the Dolphin emulator's debugger).

As a big fan of the Zelda series and a graphics geek, this was a very interesting read!

It's amazing how badly this game was trashed when it came out and how it's come to be loved in retrospect.

If the designers had followed the trend at the time and gone for "realistic" 3d with textures it would look horribly dated now.

But they did the right thing and it has aged extremely well. And the re-release looks great on the Wii U.

Wow, I hope to see a lot more of these in the future. It was a great read.

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact