When I built the Metal Gear randomizer (which randomizes objects but keeps the game finishable), I wrote a script to generate the map structure and locations of objects in the game. I was bored, so I extended the script to create map images. Everything in the maps is generated from the ROM: the characters for both the map and the objects, and also the palette they use.
I also added some info into the maps, because I could. Every screen has a white number in the upper left corner; that's the screen's id. Every exit (other than rooms that just connect) shows the room it is an exit to, and the type of exit; if the type is a number, that's the card you need to open it. In brackets means the door auto-closes. Those exits are really entries, so some places have multiple numbers below each other: those are the places where you can come from when entering the screen here.
Some notable things:
- There is a uniform in the room next to the bulldozer (b1). You always already have it when you get there, so you cannot find this in the game (without cheating).
- The ditch is shorter than the desert, but the screens in building 3 are connected (so you can look left/right with the binoculars and see them). This produces an error message in my generator, and results in a gap in the ditch in the image.
- The first elevator (f0) has the same exits as the top ladder screen. This means that if you would somehow manage to go up through the ceiling, you should immediately go the the ending. I don't think it's possible to do this in the game. I had to override the screen's exits in my script or it would mess up the output.
- The first and second floor use the same tile set, but with a different palette. Pretty clever way to get more variation in the game, and it costs almost no space in the ROM.
So unfortunately no shocking new findings, like a new room that had not been discovered before (I did find one in MoG when I did a similar project there: there is a room in the source which is entirely filled with wall, has no entries or exits, and has an id which places it in the mirror location of the room with the cross).
If you want to see the code, check out https://github.com/wijnen/mg-random/. The generated images are in the floors/ directory.
Let me know what you think about it.