Zelda Randomizer + Infinite Hyrule

If you’ve followed the speedrunning scene for a while, you’re probably familiar with fcoughlin‘s Zelda Randomizer. It’s a program that can take a rom file of The Legend of Zelda and “scramble” it, in ways that the user can specify, in order to make it playable afresh, even for people who have played through it dozens of times already. It can move dungeon entrances, dungeon layouts, item locations, enemy placements and much more. And its changes can be encapsulated into a seed value so multiple people can be guaranteed of playing the same version of the game.

But for everything Zelda Randomizer can do, one thing it cannot do is change the game’s overworld. All of the familiar Zelda landmarks, the Central Lake, the Lost Woods, Spectacle Rock, and the rest, will be present and in the same places. That is where Infinite Hyrule (forum post, BitBucket) comes in. It’s a program whose purpose is to randomly create new overworlds for The Legend of Zelda, and to insert those into a rom file.

Gah, Lynels! Nice waterfall though.

I should take a moment to impress upon you how difficult that job is. There’s a good reason fcoughlin never built an overworld randomizer himself. The Legend of Zelda doesn’t store its game world in an obvious format. To get around this, Infinite Hyrule actually expands the rom file, so it can avoid the original game’s convoluted system, which stores each overworld screen as a set of links to vertical sets of tiles.

This partially explains the unusual structure of Zelda’s landscape, and why a number of structures, like the round boulders of Spectacle Rock and the dungeon entrances, are reused in multiple places: there is only room for so many vertical strips of surface tiles in the game’s ROM chips. To create a program capable of generating new overworld, a programmer must not only keep this limitation in mind, and work within its stricture, but must also follow the usual checks to ensure the game is still winnable.

Note that tree in the bottom-left

But it’s not even necessary to combine the two tools into one, for Infinite Hyrule can work work with Zelda Randomizer! You just have to make sure you use Zelda Randomizer first, and that you restrict yourself to only using certain flags. I personally find the flag string cHBRDMIhioEeNCb14OPhBo useful for mixing things up acceptably.

In addition to mixing up the overworld and maintaining the unique feel of The Legend of Zelda‘s map, it implements a few new kinds of screens, including a village with houses, and can produce a map of the generated world too. That should keep you going for quite a while. And, if you’re not 14 any more, it can even be set to reveal LoZ‘s infamous secret caves with graphical tells of their location. That’s such a nice feature if you want to explore a map in a reasonable time frame, instead of resorting to the original game’s technique of testing every square. Since, after all, none of us are 14 anymore.

Showing off the new village biome

If for some reason you want a similar treatment for Zelda II: The Adventure of Link, you sadist, there is no need. The randomizer for that game can generate new overworlds without need of a separate utility. I’ve played quite a bit of that, and will tell you, if you thought the original game was hard, the randomized version can be ludicrous.