Zelda 2 automap


Here’s an automap for Zelda 2. Something I’d been working on using an ugly combination of Python and BizHawk’s Lua scripting, and porting it to the Wanderbar seemed like a more sensible thing. Also a good proof-of-concept for user-authored sidebars.

Basically, it loads the overworld map from memory and gradually reveals it as you explore; the revealed sections are saved to a local file between sessions. My intention was for it to be a supplement to Zelda 2 randomizer runs, where keeping track of where you’ve been is important but it’s a pain to make maps manually.

I’m labeling this as an alpha version. It’s fully functional as far as I know, but it’s not terribly pretty yet, or very well commented.


This is super cool! It would have helped a lot for my fiddle with Zelda II’s randomizer, which was definitely a failed experiment because I don’t know how to play that game. Good work, man.


Whoa, that’s a really cool idea, I’d never even considered something like it before. The fact it saves between sessions and supports randomized maps is impressive too. And you managed all this in such a short time and I haven’t even given any documentation on how everything works :star_struck:

EDIT: Oh yeah, I’m glad my NES PC address thingy works for you, and I see you check the bank too. I’m actually not familiar with how NES banks etc. work so let me know if there’s some better way of handling banks than the current way.


Honestly, I don’t know much about how the NES’s memory mapping works, other than that it’s complicated and cartridge-dependent. I just used the bank in the disassembly from FCEUX’s debugger and it seemed to work.

Here’s an updated version that’s a bit prettier. Screenshot of it being used on stream with a randomizer map:


Cool, glad to hear it and cool to see it in its natural state. I also like how it looks like real fog here, thanks to the background beneath it.

I took a peek at your code and was impressed how you used one big string to pass data to the HTML. I didn’t think it’d be feasible to send large data chunks or anything but basic ints and strs but now I see I’m wrong!


Yeah… strings are a bit ungainly for passing binary data, since somewhere in the process, any zeros get interpreted as null terminators and any values greater than 127 get interpreted as the beginning of a multibyte Unicode sequence, but it seems to work fine when you take care to sanitize your data.