This Python script takes the disassembled source code from Metroid, randomizes the item locations (except the Morph Ball), and reassembles it into something which should hopefully work in an emulator. It's wrapped up in a simple Flask app.
This is a proof of concept. If it turns out to be enjoyable for people, I'll get the code into much more presentable shape. You can see it in action at https://metroid-randomizer.herokuapp.com