Time Pilot

Un cartucho de 16 KB en el que el avión no se mueve: gira. Los disparos y el bicho del final de época no son sprites, son letras de la pantalla que miran antes de escribirse, y la interrupción reparte el trabajo en un ciclo de seis fotogramas.

Konami · ©KONAMI 1983 · Cartucho RC-703, 16 KB · MSX1 · página 1 · Volcado 183e8026…

Aquí no hay ni una captura de pantalla. Las imágenes están dibujadas repitiendo lo que hace el cartucho: se sube a la memoria de vídeo lo mismo que sube él, con sus mismas direcciones, y se monta la pantalla con sus mismas listas. Lo demás —el listado y las cifras— sale del binario y se reproduce con make.

El juego en cifras

100 %del binario explicado
5épocas, de 1910 a 2001
16direcciones de vuelo
8comportamientos de enemigo
8.911bytes de código
7.473bytes de datos
0bytes sin identificar
50,1 %del fotograma se lo come la interrupción, medido

Lo que apareció al desmontarlo

La cuarta época es 1984, no 1982

Los cinco años que pinta el marcador están en 0x4E7C, cuatro caracteres cada uno: 1910, 1940, 1970, 1984 y 2001. En el salón recreativo esa cuarta época es 1982, el año del original; esta conversión la cambió, aunque el propio cartucho firma ©KONAMI 1983.

La demo se pilota leyendo el propio cartucho

Cuando el juego se queda solo, el joystick no sale de ningún generador de números. 0x546B coge el registro R —el del refresco de la memoria— y con él elige un byte del código a partir de 0x5399; ese byte se mete tal cual en 0xE009 como si viniera del mando.

O sea que la demo vuela leyendo el programa que la está moviendo.

Los disparos son caracteres que miran antes de escribir

El MSX solo puede enseñar cuatro sprites en una línea, así que Time Pilot deja los sprites para los aviones y dibuja los ocho disparos en la tabla de nombres. Cada ficha son cuatro bytes (0xE230): la casilla, la dirección y el carácter.

Antes de pintarse, cada disparo lee la casilla a la que va (0x557B): si lo que hay no es cielo, no se dibuja. Con eso ni se pisan entre ellos ni tapan el decorado.

El avión no se mueve: gira

El mando dice a cuál de las dieciséis direcciones se quiere ir (0x545B), y el avión va girando un paso cada vez hasta llegar, siempre por el lado corto (0x53CE). Cada dirección tiene sus 32 bytes de dibujo en 0x6F2B, y solo el que toca está en la memoria de vídeo: se sube en cuanto cambia.

La interrupción reparte el trabajo en seis fotogramas

0xE01F cuenta de 0 a 5 y una tabla de seis entradas (0x4118) dice qué toca: en uno los disparos, las nubes y el avión; en otro el fondo; en otro el bicho grande; y en los tres restantes, los enemigos. Repartir así es lo que le deja mover tantas cosas en un MSX1.

Las mismas letras, dos veces en la VRAM y una en el cartucho

Los bytes de 0x798B en adelante se suben a dos juegos de caracteres distintos, uno para el menú y otro para la fuente. Como en SCREEN 2 el color va por carácter, tener el mismo dibujo con dos números es lo que permite el mismo alfabeto en dos colores, sin gastar el doble de cartucho. Con las cifras (0x79D3) pasa igual.

El silencio es un programa de sonido vacío

Para callar el canal 2 de golpe, 0x5C8F no toca el PSG: le apunta el puntero al 0xFF que cierra el programa de 0x7E40. El canal lee el final y se calla él solo, por el camino de siempre.

Los helicópteros no giran porque no hay dibujos

Cada época sube los patrones de sus enemigos, y el biplano, el caza y el reactor traen ocho rotaciones cada uno. El helicóptero de la época 3 trae 96 bytes: tres dibujos (0x75F2).

Y a esa época le tocan justo los comportamientos 5, 6 y 7, que son los tres únicos que no giran. Los comportamientos están repartidos según los dibujos que hay.

La interrupción se come la mitad del fotograma

Medido en openMSX sobre una partida grabada: 50,11 % del cuadro, 10,09 ms de 20,1, con dos métodos independientes que dan lo mismo. Y el reparto en seis fases sale parejo, de 8,81 a 11,10 ms.

Con la demo en marcha, que dispara sin parar, sube al 71,32 %.

Este cartucho no lleva la marca oculta de Konami

Otros cartuchos de la casa esconden al final de la ROM su número de catálogo y el título en katakana, un detalle que documentó Manuel Pazos. Aquí no hay nada: de 0x7F1E hasta el último byte solo hay 226 bytes de relleno, todos 0xFF.

Lo que el cartucho dibuja

Cada una de estas imágenes es el cartucho repetido fuera de él: los caracteres se suben como los sube la ROM, con sus colores, y la pantalla se monta con las mismas listas de rótulos. Debajo de cada pie está la dirección de donde sale.

0x4A62 — la pantalla de título, montada con las listas de rótulos de 0x4EAB y 0x4E90 sobre los caracteres que sube INIT
0x4A62 — la pantalla de título, montada con las listas de rótulos de 0x4EAB y 0x4E90 sobre los caracteres que sube INIT
0x4EE8 — y con las cuatro opciones del menú encima: uno o dos jugadores, con joystick o con teclado. Cada opción es una lista de rótulos más
0x4EE8 — y con las cuatro opciones del menú encima: uno o dos jugadores, con joystick o con teclado. Cada opción es una lista de rótulos más
0x7792 y 0x798B — los caracteres con los que está escrito todo eso, con su color. A la derecha están los mismos bytes subidos otra vez con otro número de carácter, que es como salen en dos colores
0x7792 y 0x798B — los caracteres con los que está escrito todo eso, con su color. A la derecha están los mismos bytes subidos otra vez con otro número de carácter, que es como salen en dos colores
0x6F2B — los dieciséis dibujos del avión, uno por dirección de vuelo, de 32 bytes cada uno. En la memoria de vídeo solo hay uno: el que toca
0x6F2B — los dieciséis dibujos del avión, uno por dirección de vuelo, de 32 bytes cada uno. En la memoria de vídeo solo hay uno: el que toca
0x712B — parte de los patrones de sprite comunes, los que valen para todas las épocas
0x712B — parte de los patrones de sprite comunes, los que valen para todas las épocas
la pantalla de la época 1 montada entera: el cielo y sus colores (0x4D39), las nueve nubes por las casillas que dice 0x4CE9, el avión, y el marcador con su año, sus vidas y las marcas de los enemigos que faltan
la pantalla de la época 1 montada entera: el cielo y sus colores (0x4D39), las nueve nubes por las casillas que dice 0x4CE9, el avión, y el marcador con su año, sus vidas y las marcas de los enemigos que faltan
0x6D3C — el bicho grande de la época 3 con sus copias desplazadas, tal como se sube a la memoria de vídeo: no es un sprite, son 24 caracteres que se escriben en la tabla de nombres
0x6D3C — el bicho grande de la época 3 con sus copias desplazadas, tal como se sube a la memoria de vídeo: no es un sprite, son 24 caracteres que se escriben en la tabla de nombres
los dieciséis primeros caracteres del juego, con sus colores: los ocho dibujos del disparo —esos puntitos— y la navecita de las vidas (0x6A85), el cielo, la marca del enemigo que falta (0x6AD0) y la casilla que va debajo del avión (0x6AF0)
los dieciséis primeros caracteres del juego, con sus colores: los ocho dibujos del disparo —esos puntitos— y la navecita de las vidas (0x6A85), el cielo, la marca del enemigo que falta (0x6AD0) y la casilla que va debajo del avión (0x6AF0)