
Our automap code in our game used to have a gigantic bitmap of the level, and just display it. Nice, simple, inefficient. Completely broke with the random maps - the bitmap ended up being far larger than the hardware could handle, and while we could have broken it up into pieces, we'd be looking at 4mb RAM usage on a platform where we've only got 32mb to begin with.
Our new automap code divides the map into blocks, then assembles those in realtime on the screen. That's what the image above is - the blocks it's divided the level into. In theory, we can represent any of our maps by slapping enough of those pieces together. Unfortunately the image you see above doesn't actually work - due to memory bandwidth constraints and how the microcode in the hardware processing works, we're limited to one byte per coordinate. 256x256 maps at most, and the above map is larger. Luckily, we can do flipping and rotating in hardware (which we're not taking advantage of) and we can merge very similar blocks (which, obviously, we're also not yet taking advantage of.)
On the other hand, it looks kinda neat this way. Reminds me of tilesets for ancient games.
Yes, this level has a pipe network.