la serie/

Lo que comparten

Todos contra todos, buscando tiras de bytes idénticas de 32 o más: 570 de las 1.176 parejas posibles comparten algo, y en 305 de ellas hay código.

Primero hubo que separar el código de los dibujos

Lo primero que sale al ordenar por cuántos cartuchos comparten un trozo son cuarenta y seis bytes que están en veintiséis cartuchos de Konami… y no son una rutina: son la tipografía. 3E 63 03 0E 03 63 3E dibuja un 3 y 7C 66 63 63 63 66 7C una D. Konami reutilizaba sus dibujos tanto como su código, y una matriz de bytes no distingue.

Aquí se distingue sin adivinar: el listado de cada juego ya sabe qué bytes son código, porque los lleva como instrucciones con su dirección delante. Si la dirección de la tira aparece así, es código; si no, son datos.

Las piezas del armazón, y cómo las bautizó cada repositorio

bytescartuchosnombres distintoscómo lo llaman
361812LEE_EL_TECLADO, LEE_MANDOS, LEE_TECLADO, L_45E8, lee_el_mando, lee_el_mando_1, lee_el_teclado, lee_las_filas_7_y_8_del_teclado, lee_los_mandos, lee_mando_y_teclado, lee_teclado_1, teclado_del_jugador_1
1611211L_464F, L_4716, L_4766, L_4867, L_4902, L_4A02, L_4A54, L_4B2F, L_4C0C, L_4C45, PINTA_TIRA_BUCLE
170116SUBE_LOGOTIPO, baja_un_paso, barre_la_pantalla, sube_el_logotipo_una_fila, sube_el_rotulo, tarea_0_desplaza_logo
53119ACTUALIZA_CANAL_7D6A, L_52B9, MUSICA_EVENTO_LARGO, NOTA_DE_UN_BYTE, corre_el_canal_nota_larga, lee_una_nota_de_musica, lee_una_nota_larga, manda_de_la_melodia, mandatos_largos
5097L_7BA6, L_9F80, MIRA_LA_OCTAVA, corre_el_canal_barrido, melodia_octava, mira_el_prefijo_de_octava, mira_si_hay_octava_si_no
17495SUBE_LOGOTIPO, baja_un_paso, barre_la_pantalla, sube_el_logotipo_una_fila, sube_el_rotulo

La misma lectura de mandos —ld a,7 y la llamada 0x0141 del BIOS, que lee una fila del teclado— está byte a byte en dieciocho cartuchos y se llama de doce maneras distintas, porque los repositorios se escribieron a lo largo de meses sin un sitio donde mirar. Éste es ese sitio.

Y hay una pieza de 161 bytes repartida por doce cartuchos que diez de ellos dejaron sin nombre (L_4716, L_4766, L_4867…): sólo Ping Pong la bautizó, como PINTA_TIRA_BUCLE.

Lo que este método no ve

Compara bytes, así que sólo encuentra una rutina compartida si además la ensamblaron en la misma dirección: en cuanto cambia el mapa de memoria, la misma rutina da bytes distintos porque sus direcciones lo son. Por eso de aquí no sale una separación limpia en dos armazones —a umbral bajo todos los Konami quedan conectados y a umbral alto se deshacen en fragmentos—, sino un continuo.

Un aviso concreto: la lectura de mandos de 65 bytes que Athletic Land comparte con Antarctic Adventure está en la Antarctic europea y en la japonesa 1.ª, y no en la 2.ª, que es la que su Makefile elige por defecto y la que mide esta base. Un hallazgo puede depender de qué volcado se mire.