1. Cómo se lee el código de barras

Qué dígitos cuentan, la dispersión de 40 bits y el caso del EAN-8

Nota: esta página trata de los códigos JAN/EAN comerciales. El Datach lee además un formato propietario de cartas de Bandai que funciona con otras reglas — véase 4. El código de barras de Bandai.

日本語 | English | Français | Español | Italiano | 한국어

Notación

Los 13 dígitos de un código EAN-13 se numeran de d1 a d13 desde la izquierda. Para 4902773230126 eso significa d1=4, d2=9, y así hasta d13=6. Cada dígito vale de 0 a 9; sus bits se escriben b0 (el menos significativo) a b3. Así, d6=7 da b0=1, b1=1, b2=1, b3=0.

Solo importan d3 a d12

Primer hecho importante. Solo d3 a d12 alimentan el cálculo del personaje y de las estadísticas. Los dos primeros dígitos (el prefijo de país) y el dígito de control final no influyen en el resultado. Así, 4902773230126 y 4502773230128 (prefijo cambiado a 45, dígito de control recalculado) producen exactamente el mismo resultado. Los jugadores habían deducido experimentalmente que el prefijo de país «no hacía nada»; leer el programa confirma que está implementado así.

Que el dígito de control no se use en el cálculo no significa que pueda ponerse a capricho. El lector, que va antes del cálculo, sí lo verifica, y una secuencia que falla esa comprobación se detiene ahí. Por eso en el ejemplo anterior se recalcula el dígito de control tras cambiar el prefijo: un código en el que solo se altere el dígito de control ni siquiera se leerá. Dicho con precisión, el dígito de control no interviene en el cálculo del resultado, pero sirve para validar la lectura. Esto salió a la luz al rastrear las discrepancias en los registros; la historia está en la página de curiosidades.

La dispersión de 40 bits

Los diez dígitos d3–d12 se dividen cada uno en cuatro bits (b0–b3). Los 40 bits resultantes se redistribuyen bit a bit en cinco registros internos R0–R4, según una tabla fija.

Esto es lo que hacía tan difícil descifrar el sistema desde fuera. La información de dígitos contiguos se lanza a posiciones de bit lejanas, así que ningún experimento dígito a dígito llega a mostrar un patrón regular.

La tabla completa. Las columnas son el bit de origen; cada celda indica el registro y la posición de bit de destino.

Dígitob0 va ab1 va ab2 va ab3 va a
d3R3 bit7R2 bit4R4 bit4R3 bit4
d4R0 bit5R2 bit0R3 bit6R3 bit3
d5R1 bit1R3 bit0R0 bit3R4 bit0
d6R1 bit3R1 bit5R0 bit0R4 bit3
d7R0 bit7R0 bit1R1 bit7R3 bit2
d8R1 bit4R2 bit3R4 bit5R2 bit2
d9R2 bit7R1 bit0R2 bit6R4 bit6
d10R0 bit2R4 bit1R3 bit1R3 bit5
d11R1 bit2R2 bit1R0 bit4R4 bit2
d12R0 bit6R4 bit7R1 bit6R2 bit5

Cuarenta bits se corresponden con cuarenta bits sin que sobre nada: la aplicación es biyectiva. No se descarta información, solo se reordena.

Tras la dispersión, todo lo decide el orden de lectura

R0–R4 se tratan luego como un único flujo de 40 bits, consumido desde el principio (el bit más significativo de R0). El consumo reparte exactamente los 40 bits:

Bits leídosUsoDetalle
2Casilla de objeto o de personajePágina 2
8Sorteo ponderado del personaje
3Nivel de la técnica especialPágina 3
9 × 3PV, BP, DP (nueve bits cada uno)

El EAN-8 (el código corto de 8 dígitos)

Los códigos de 8 dígitos de los cigarrillos y de los artículos pequeños también se leen. El juego toma los ocho dígitos o1–o8 y los pliega sobre sí mismos para construir diez dígitos efectivos, y después aplica exactamente el mismo proceso que al EAN-13. Los diez efectivos son:

[o3, o4, o5, o6, o7, o8, o7, o6, o5, o4]

Un código EAN-8 lleva, pues, solo seis dígitos de información (o3–o8), y o4–o7 se usan dos veces cada uno. Una consecuencia curiosa: el dígito de control del EAN-8 (o8) sí participa en el cálculo, al contrario que en el EAN-13. Así que en un código de 8 dígitos, equivocarse solo en o8 se manifiesta como una estadística desplazada — que es justo la propiedad que permitió resolver los registros discrepantes.

En resumen. El código de barras no es una semilla aleatoria. Cuarenta bits se barajan hacia posiciones fijas y se releen en un orden fijo. El proceso es completamente determinista: el mismo código da siempre el mismo personaje.

→ Página 2: la elección del personaje