Q*bert

Fifty pyramids of cubes that roll like dice, five in a row to clear a stage, a duel settled by rock, paper, scissors and a hidden life. All drawn from the ROM.

Konami - (c) Konami 1986 - An RC-746 32 KB cartridge - MSX - Dump bd253f32...

Not one capture here. Every picture is drawn from the bytes of the ROM with the cartridge's own tables: the logos, the title, the fifty stages, the bonus stage, the duel, Q*bert, the creatures and the pattern viewer nobody calls. Eleven screens are checked against openMSX byte for byte, with 0 differences. The listing and the numbers are reproducible with make, and reassembling gives back the ROM byte for byte.

The cartridge in numbers

100%of the binary explained
788named routines
78.1%of the listing commented
11,743bytes of code
21,025bytes of data
0bytes unidentified

What turned up when we took it apart

You do not paint the pyramid: five in a row

A stage is cleared with five finished cubes in a row in a row, column or diagonal of the 9 × 9 grid (gaps do not break the line). One line is needed up to stage 30, two from 31 to 40 and three from 41 to 50 (0x737D).

Seen in openMSX: five cubes marked on row 4 of stage 1 and the stage is cleared, and the time is paid at 10 points a second.

Every cube is a die

The cubes do not change colour: they roll. Each one is one of the 24 rotations of a cube with painted faces, and jumping on it rolls it the way you go (0x72C0, 24 × 4). The model is at the top left; a cube is finished when it shows the same three faces.

Measured walking the table: any rotation is reachable from any other in four jumps at most.

The duel is settled by rock, paper, scissors

With two players both play at once: the second one with E, S, F, C and CTRL or joystick 2, each with their own model. The first to make a line wins the set; if time runs out, whoever has more cubes. With a tie, or if both fall, JAN-KEN-PON: down is paper, left scissors and up rock (0x8B2B).

The hands come from the ROM; the duel comes from the code and has not been played through.

A hidden life

If your last three jumps each finished a cube and you have fewer than 8 lives, an object appears at your height and crosses the screen from left to right (0x8FDF). Touching it gives a life.

Seen in openMSX: the object appears, crosses and the lives go from 2 to 3.

F5 to go on, F1 to stop

At GAME OVER, F5 is the CONTINUE: score to zero, three lives and the same stage (0x4380). F1 pauses, but only while the stage music is playing (0x6AA3).

Both seen in openMSX.

Fifteen objects, and a moai

Balls that do things fall down the pyramid: the green one freezes everyone, the grey one makes them run away, the red one gives the long jump (two rows, with the trigger) and turns Q*bert white, the yellow one speeds you up, the turtle slows you down and the blue one makes you invincible. A hooded one that chases you, a moai that bounces down and six coloured creatures that stay on cubes of their colour are the ones that kill (0x7628).

It comes from the code; the drawings, from the ROM.

The bonus stage: 27 cubes and PERFECT

After stages 3, 6 and 10 of every ten comes a bonus stage: Q*bert does not move, each diagonal rotates the cube he stands on, and when it is finished he moves on to the next (0x789D). At the end each finished cube is worth 100, 200, 300… and with all 27, PERFECT 5000 POINT.

Seen in openMSX after stage 3; the PERFECT comes from the code.

A Konami slip: the green ball writes into the BIOS

When you take the green ball, 0x7763 loads 0x00BC and writes to 0x00BC and 0x00BA, which are the BIOS ROM: nothing happens. Everything points to it being meant for 0xE2BC, object 23.

What nobody runs

Twelve pieces of code nobody calls: a development pattern viewer that fills the screen with 0, 1, 2… (0x6757), which we ran in a game and is in the gallery; old copies of the key reading and, at 0x44A5, the Game Master stage with a loop that never exits, never reached because the variable is cleared just before. And at the end of the ROM, Konami's hidden mark: キューバート, RC-746.

What the cartridge draws

Under each picture is where it comes from and what is on it.

The title: the logo in its frame (0x4B95), Q*bert at the arcade machine (the RLE at 0xB09A and the script at 0x8849) and the texts at 0x4790. Checked against openMSX: 0 differences.
The title: the logo in its frame (0x4B95), Q*bert at the arcade machine (the RLE at 0xB09A and the script at 0x8849) and the texts at 0x4790. Checked against openMSX: 0 differences.
The 50 stages, from their 9 × 9 boards (0x97DB, 81 bytes each) and the cubes of their style (0xA7FE: one for 1-10, one for 11-20 and one for 21-50). The top-left cube is the model. Stages 1, 11, 21, 41 and 50 checked: 0 differences.
The 50 stages, from their 9 × 9 boards (0x97DB, 81 bytes each) and the cubes of their style (0xA7FE: one for 1-10, one for 11-20 and one for 21-50). The top-left cube is the model. Stages 1, 11, 21, 41 and 50 checked: 0 differences.
Stage 1 just built, with the score line, the time and Q*bert on the first cube of his column (0x64C3).
Stage 1 just built, with the score line, the time and Q*bert on the first cube of his column (0x64C3).
The bonus stage: 27 cubes (0xA7AD) and BONUS at the top. Checked after stage 3: 0 differences.
The bonus stage: 27 cubes (0xA7AD) and BONUS at the top. Checked after stage 3: 0 differences.
The duel on stage 31: both models with 1P and 2P above them, and both Q*berts. Checked: 0 differences.
The duel on stage 31: both models with 1P and 2P above them, and both Q*berts. Checked: 0 differences.
Q*bert: two overlaid 16 × 16 sprites, yellow and magenta (0xACBC to the left, 0xADBC to the right, standing and in the air), falling (0xAF3C) and on a cleared stage (0xAEBC).
Q*bert: two overlaid 16 × 16 sprites, yellow and magenta (0xACBC to the left, 0xADBC to the right, standing and in the air), falling (0xAF3C) and on a cleared stage (0xAEBC).
The second Q*bert of the duel: the same drawings in light blue (0x65CB).
The second Q*bert of the duel: the same drawings in light blue (0x65CB).
The fifteen objects 4 to 18 with their colour from 0x65CB, landed and in the air: the grey ball, the green one, the yellow one, the turtle, the red one, the cube spinner, the moai, the hooded one, the six coloured ones and the blue ball.
The fifteen objects 4 to 18 with their colour from 0x65CB, landed and in the air: the grey ball, the green one, the yellow one, the turtle, the red one, the cube spinner, the moai, the hooded one, the six coloured ones and the blue ball.
The moai's two sets of drawings, swapped as it jumps (0xAC3C and 0xAC7C).
The moai's two sets of drawings, swapped as it jumps (0xAC3C and 0xAC7C).
The hidden life object: two sprites, red and white (0x9019).
The hidden life object: two sprites, red and white (0x9019).
The duel's PON!, built from the ROM: the frame at 0x8D3D, the hands and the letters at 0x90E3. This one is not checked.
The duel's PON!, built from the ROM: the frame at 0x8D3D, the hands and the letters at 0x90E3. This one is not checked.
The three hands (0x8B49): paper, scissors and rock. The right-hand one is the left-hand one mirrored (0x8C5F).
The three hands (0x8B49): paper, scissors and rock. The right-hand one is the left-hand one mirrored (0x8C5F).
The pattern viewer at 0x6757, which nobody calls: it puts each cell's number in it, 0 to 255 in every third, and so shows every loaded tile. Over stage 1: the 16 faces, the font, the style's edges, the finished cube, the frame and the hearts. Run in openMSX and checked: 0 differences in the tiles the stage builds.
The pattern viewer at 0x6757, which nobody calls: it puts each cell's number in it, 0 to 255 in every third, and so shows every loaded tile. Over stage 1: the 16 faces, the font, the style's edges, the finished cube, the frame and the hearts. Run in openMSX and checked: 0 differences in the tiles the stage builds.
The same viewer over the title: the pieces of the logo and the arcade machine. Checked: 0 differences.
The same viewer over the title: the pieces of the logo and the arcade machine. Checked: 0 differences.
The Konami logo uncovered line by line at power-on (0x4982, 0x494E). Checked: 0 differences.
The Konami logo uncovered line by line at power-on (0x4982, 0x494E). Checked: 0 differences.