There is not one illustration or capture here. The screens and the twelve maps are drawn from the bytes of the ROM, by running in Python the same run-length decompressor, the same character loader and the same column builder the Z80 runs. The listing and the numbers come from the binary and are reproducible with make.
There are two ways out of a stage: acaba_la_fase adds one to the stage number, and salta_a_la_fase writes one straight in. EIGHT places jump to the second, each with its own number, and that gives the real running order: 1 - 2 - 9 - 3 - 10 - 4 - 11 - 5 - 6 - 7 - 12 - 8. Stages 9 to 12 are bonus stages: no boss, and their ending puts the stage back to 3, 4, 5 and 8. What opens them is the target at the end of the stage: 0xB130, the only instruction in the whole 128 KB that stops the screen, is the one the finals of stages 2, 3, 4 and 7 test.
The eight bytes at 0x575A program the VDP registers and put nothing where the BIOS puts it: patterns live at 0x2000 and colours at 0x0000, the name table sits at 0x3800 and the sprite attributes at 0x3B00, right behind it. Anyone reading the addresses in this listing expecting the usual layout will get every one of them wrong.
The twenty-two rows of thirty-two cells live at 0xED00. On every scroll step 0x469D shifts them one column left with twenty-two ldirs, 0x46AE feeds the new column in on the right, and 0x47FE pushes all 704 bytes to VRAM with outi. The incoming column comes from the stage script: six piece numbers every four columns, each piece four by four characters. That is how the twelve maps below are drawn, without touching an emulator.
There is no seed and no generator. What stands in for chance is ld a,r, the refresh register, which counts on its own with every instruction: it decides which of the two star drawings goes into each sky column (0x4750), which of the sixteen doors each falling rock comes through (0xABC2), how many frames each drawing of the out-of-step blinking enemy lasts (0xB016 and 0xBC59) and how far the one that walks on the ground gets (0xAAE6).
An object boils down to its type, 1 to 0x1F. That number drives two twin tables: the one at p00:0x5DFD says who moves it every frame and the one at p01:0x6B46 who finishes building it when it is born. Of the thirty-one types, twenty have at least one of the two in bank 3 and sixteen have both, which is why 0xA7B9..0xB537 is the longest stretch of code in the cartridge.
Type 0x1D closes in a spiral around a centre, and there is no sine table for it: take the difference to the centre along one axis, divide it by eight with three sra a and add it to the other, then the same the other way round. That is a turn of about seven degrees per step. The radius shrinks separately, multiplying both coordinates by a byte that starts at 0xFF and drops by one every 0x3C frames.
Bank 12 holds, per stage, a list of pairs [how many frames][what the joystick reads]. 0x5CDA walks it and drops the recorded value into 0xE009, the very byte where 0x5767 leaves what it reads from the real joystick, with the fire bit forced on. And it starts fully powered: 0x5CB8 calls the same routine the HYPER cheat calls.
0x44E7 watches the GRAPH key and, with the screen stopped, 0x50C9 collects letters into 0xE1E8 until RETURN is pressed; then what was typed is compared against the words at 0x51BF. Typing them while playing does nothing: the cheat keyboard only exists while the game is paused.
The table at 0x4214 says which distance each stage restarts at if you had already got that far, and it is read with HL = 0x4212 and TWICE the stage number. It holds eleven entries: stage 1 takes the one at 0x4214 and stage 11 the one at 0x4228. Stage 12 reads at 0x422A, which is already code — the first two bytes of a call — and gets 0xBACD, that is 47,821. Since the scroll never gets anywhere near that distance, stage 12 always restarts at 0x20: the bug is real and its effect is nothing.
At the end of bank 3, at offset 0x07FFF of the dump, sit the cartridge code RC-742 and eight katakana characters that read グラディウス, that is Gradius. It is the signature Konami hid in its cartridges, and the person who found and documented it is Manuel Pazos.
Under each picture is where it comes from and what is on it. The maps are the whole stage, end to end.
SPEED UP, MISSILE, DOUBLE, LASER and OPTION