Q*bert

Cincuenta pirámides de cubos que ruedan como dados, cinco en línea para pasar de fase, un duelo que se desempata a piedra, papel o tijera y una vida escondida. Todo dibujado desde la ROM.

Konami - (c) Konami 1986 - Cartucho RC-746 de 32 KB - MSX - Volcado bd253f32...

Aquí no hay ninguna captura. Todas las imágenes están dibujadas desde los bytes de la ROM con las tablas del propio cartucho: los logotipos, el título, las cincuenta fases, la bonificación, el duelo, Q*bert, los bichos y el visor de patrones que no llama nadie. Once pantallas están cotejadas contra openMSX byte a byte, con 0 diferencias. El listado y las cifras se reproducen con make, y el reensamblado devuelve la ROM byte a byte.

El cartucho en cifras

100 %del binario explicado
788rutinas con nombre
78,1 %del listado comentado
11.743bytes de código
21.025bytes de datos
0bytes sin identificar

Lo que apareció al desmontarlo

No hay que pintar la pirámide: cinco en línea

Una fase se acaba con cinco cubos acabados seguidos en una fila, una columna o una diagonal de la cuadrícula de 9 × 9 (los huecos no cortan la línea). Hace falta una línea hasta la fase 30, dos de la 31 a la 40 y tres de la 41 a la 50 (0x737D).

Visto en openMSX: cinco cubos marcados en la fila 4 de la fase 1 y la fase se da por acabada, y cobra el tiempo a 10 puntos el segundo.

Cada cubo es un dado

Los cubos no cambian de color: ruedan. Cada uno es uno de los 24 giros de un cubo con sus caras pintadas, y al saltarle encima rueda hacia donde vas (0x72C0, 24 × 4). El modelo está arriba a la izquierda; un cubo está acabado cuando enseña las mismas tres caras.

Medido recorriendo la tabla: cualquier giro se alcanza desde cualquier otro en cuatro saltos como mucho.

El duelo se desempata a piedra, papel o tijera

Con dos jugadores se juega a la vez: el segundo, con E, S, F, C y CTRL o con el mando 2, y cada uno con su modelo. Gana la partida el primero que hace línea; si se acaba el tiempo, el que más cubos tiene. Con empate, o si caen los dos, JAN-KEN-PON: abajo es papel, izquierda tijera y arriba piedra (0x8B2B).

Las manos salen de la ROM; el duelo sale del código y no lo hemos jugado entero.

Una vida escondida

Si los tres últimos saltos han acabado un cubo cada uno y tienes menos de 8 vidas, sale un objeto a tu altura que cruza la pantalla de izquierda a derecha (0x8FDF). Tocarlo da una vida.

Visto en openMSX: el objeto sale, cruza y las vidas pasan de 2 a 3.

F5 para seguir, F1 para parar

En el GAME OVER, F5 es el CONTINUE: puntuación a cero, tres vidas y la misma fase (0x4380). F1 pausa, pero solo mientras suena la música de la fase (0x6AA3).

Las dos vistas en openMSX.

Quince objetos, y un moái

Por la pirámide caen bolas que hacen cosas: la verde congela a todos, la gris los hace huir, la roja da el salto largo (dos filas, con el disparo) y pone a Q*bert blanco, la amarilla acelera, la tortuga frena y la azul da invencibilidad. Matan un encapuchado que te persigue, un moái que baja botando y seis bichos de colores que se quedan en los cubos de su color (0x7628).

Sale del código; los dibujos, de la ROM.

La bonificación: 27 cubos y PERFECT

Tras las fases 3, 6 y 10 de cada decena llega una fase de bonificación: Q*bert no se mueve, cada diagonal gira el cubo que pisa, y al acabarlo pasa al siguiente (0x789D). Al final cada cubo acabado vale 100, 200, 300… y con los 27, PERFECT 5000 POINT.

Visto en openMSX tras la fase 3; el PERFECT sale del código.

Un fallo de Konami: la bola verde escribe en la BIOS

Al coger la bola verde, 0x7763 carga 0x00BC y escribe en 0x00BC y 0x00BA, que son la ROM de la BIOS: no pasa nada. Todo indica que iba a 0xE2BC, el objeto 23.

Lo que no ejecuta nadie

Doce trozos de código que no llama nadie: un visor de patrones de desarrollo que llena la pantalla con 0, 1, 2… (0x6757), que hemos ejecutado en una partida y está en la galería; copias antiguas de la lectura de teclas y, en 0x44A5, la fase del Game Master con un bucle que no sale nunca, al que no se llega porque la variable se borra justo antes. Y al final de la ROM, la marca oculta de Konami: キューバート, RC-746.

Lo que el cartucho dibuja

Debajo de cada imagen está de dónde sale y qué se está viendo.

El título: el rótulo en su marco (0x4B95), Q*bert en la recreativa (el RLE de 0xB09A y el guion de 0x8849) y los textos de 0x4790. Cotejado contra openMSX: 0 diferencias.
El título: el rótulo en su marco (0x4B95), Q*bert en la recreativa (el RLE de 0xB09A y el guion de 0x8849) y los textos de 0x4790. Cotejado contra openMSX: 0 diferencias.
Las 50 fases, desde sus tableros de 9 × 9 (0x97DB, 81 bytes cada uno) y los cubos de su estilo (0xA7FE: uno para la 1-10, otro para la 11-20 y otro para la 21-50). El cubo de arriba a la izquierda es el modelo. Cotejadas la 1, la 11, la 21, la 41 y la 50: 0 diferencias.
Las 50 fases, desde sus tableros de 9 × 9 (0x97DB, 81 bytes cada uno) y los cubos de su estilo (0xA7FE: uno para la 1-10, otro para la 11-20 y otro para la 21-50). El cubo de arriba a la izquierda es el modelo. Cotejadas la 1, la 11, la 21, la 41 y la 50: 0 diferencias.
La fase 1 recien montada, con el marcador, el tiempo y Q*bert en el primer cubo de su columna (0x64C3).
La fase 1 recien montada, con el marcador, el tiempo y Q*bert en el primer cubo de su columna (0x64C3).
La fase de bonificación: 27 cubos (0xA7AD) y BONUS arriba. Cotejada tras la fase 3: 0 diferencias.
La fase de bonificación: 27 cubos (0xA7AD) y BONUS arriba. Cotejada tras la fase 3: 0 diferencias.
El duelo en la fase 31: los dos modelos con 1P y 2P encima, y los dos Q*bert. Cotejado: 0 diferencias.
El duelo en la fase 31: los dos modelos con 1P y 2P encima, y los dos Q*bert. Cotejado: 0 diferencias.
Q*bert: dos sprites de 16 × 16 superpuestos, amarillo y magenta (0xACBC a la izquierda, 0xADBC a la derecha, de pie y en el aire), cayendo (0xAF3C) y en la fase acabada (0xAEBC).
Q*bert: dos sprites de 16 × 16 superpuestos, amarillo y magenta (0xACBC a la izquierda, 0xADBC a la derecha, de pie y en el aire), cayendo (0xAF3C) y en la fase acabada (0xAEBC).
El segundo Q*bert del duelo: los mismos dibujos en azul claro (0x65CB).
El segundo Q*bert del duelo: los mismos dibujos en azul claro (0x65CB).
Los quince objetos del 4 al 18 con su color de 0x65CB, posados y en el aire: la bola gris, la verde, la amarilla, la tortuga, la roja, el que gira cubos, el moái, el encapuchado, los seis de colores y la bola azul.
Los quince objetos del 4 al 18 con su color de 0x65CB, posados y en el aire: la bola gris, la verde, la amarilla, la tortuga, la roja, el que gira cubos, el moái, el encapuchado, los seis de colores y la bola azul.
Los dos juegos de dibujos del moái, que se alternan al saltar (0xAC3C y 0xAC7C).
Los dos juegos de dibujos del moái, que se alternan al saltar (0xAC3C y 0xAC7C).
El objeto de la vida escondida: dos sprites, rojo y blanco (0x9019).
El objeto de la vida escondida: dos sprites, rojo y blanco (0x9019).
El PON! del duelo, montado desde la ROM: el recuadro de 0x8D3D, las manos y las letras de 0x90E3. Esta no está cotejada.
El PON! del duelo, montado desde la ROM: el recuadro de 0x8D3D, las manos y las letras de 0x90E3. Esta no está cotejada.
Las tres manos (0x8B49): papel, tijera y piedra. La de la derecha es la de la izquierda reflejada (0x8C5F).
Las tres manos (0x8B49): papel, tijera y piedra. La de la derecha es la de la izquierda reflejada (0x8C5F).
El visor de patrones de 0x6757, que no llama nadie: pone en cada casilla su número, 0 a 255 en cada tercio, y así enseña todos los tiles cargados. Sobre la fase 1: las 16 caras, la fuente, las aristas del estilo, el cubo acabado, el marco y los corazones. Ejecutado en openMSX y cotejado: 0 diferencias en los tiles que monta la fase.
El visor de patrones de 0x6757, que no llama nadie: pone en cada casilla su número, 0 a 255 en cada tercio, y así enseña todos los tiles cargados. Sobre la fase 1: las 16 caras, la fuente, las aristas del estilo, el cubo acabado, el marco y los corazones. Ejecutado en openMSX y cotejado: 0 diferencias en los tiles que monta la fase.
El mismo visor sobre el título: los trozos del rótulo y de la recreativa. Cotejado: 0 diferencias.
El mismo visor sobre el título: los trozos del rótulo y de la recreativa. Cotejado: 0 diferencias.
El logotipo de Konami que se destapa línea a línea al encender (0x4982, 0x494E). Cotejado: 0 diferencias.
El logotipo de Konami que se destapa línea a línea al encender (0x4982, 0x494E). Cotejado: 0 diferencias.