Este sitio es solo una puerta de entrada

Todo lo que hay aquí viene de cosas que otras personas investigaron, pensaron y construyeron de verdad: libros, artículos, registros históricos y la gente detrás de ellos. Si algo te llama la atención, ve a las fuentes originales que aparecen al final de la página. Tienen mucha más profundidad de la que una página como esta puede ofrecer.

¿Cómo hablan dos Game Boy por un cable con solo tres hilos?

Categoría: Tecnología

Si alguna vez conectaste dos Game Boy con un cable de enlace, tal vez pensaste que por ahí viajaba una conversación complicada. La respuesta corta es sorprendente: de los seis contactos del enlace, solo tres sirven para comunicarse. Uno lleva los datos que salen, otro los que entran y el tercero lleva la señal de reloj, el ritmo, que genera una de las consolas. Esa consola consolas toca ese «tictac» y, en ocho pulsos, cada consola entrega su byte y recibe el de la otra al mismo tiempo [1][2].

Después vamos a ver qué pasa cuando el cable está suelto, qué tan rápido puede ir todo esto y por qué un cable pensado para jugar partidas fue también el que permitió intercambiar Pokémon. Y al final tienes un juego con papelitos para sentir el mecanismo en las manos.

1. Qué hilos tiene el cable de enlace y cuáles se usan para comunicarse

El enlace del Game Boy original tiene seis contactos. La lista de Pan Docs, un manual técnico escrito por aficionados, los nombra así: alimentación de 5 V, salida de datos (SOUT), entrada de datos (SIN), un contacto sin uso, el reloj o pulso (SCK) y tierra [2]. Para hablar, el cable usa tres: SOUT, SIN y SCK. La alimentación y la tierra son la referencia eléctrica, y el sexto contacto no se usa.

El detalle ingenioso está dentro del cable: en uno de los extremos, SOUT y SIN van cruzados [2]. Sin ese cruce, la salida de una consola quedaría conectada con la salida de la otra y nadie escucharía a nadie. Con el cruce, lo que una consola envía llega a la entrada de la otra, y con un solo cable se habla en las dos direcciones.

Una aclaración sobre las fuentes: esta información viene de documentación técnica de la comunidad, no de un plano publicado por Nintendo. Nintendo sí confirma en su página oficial que el cable para el Game Boy original tiene el código DMG-04A [4]. Queda entonces la pregunta que sigue: si hay un solo hilo de ritmo, ¿cuál de las dos consolas lo toca?

2. Cuál de las dos consolas marca el ritmo y cuál espera

La comunicación se hace de un byte en un byte (un byte son ocho bits, ocho ceros o unos). Una de las consolas genera internamente la señal de reloj y por eso decide cuándo ocurre el intercambio. Pan Docs la llama «maestra»; la otra es la «esclava», que recibe ese reloj [1]. En el texto en español prefiero decir la que marca el ritmo y la que espera.

Cuál papel toma cada consola no depende del cable, sino de un bit del registro SC, una pequeña memoria de control: 1 significa reloj interno (marca el ritmo) y 0 reloj externo (espera) [1]. Como el ritmo lo pone una sola consola, no hace falta que las dos tengan relojes que coincidan. Esa es una de las razones, a nuestro entender, de que baste un solo hilo para el tiempo.

La que espera depende por completo de la otra. Por eso Pan Docs aconseja que los programas usen un contador de tiempo límite y abandonen la comunicación si no llega respuesta [1]; sin ese cuidado, la consola podría quedarse esperando sin fin. Con los papeles repartidos, falta ver qué ocurre en cada pulso.

3. Cómo se intercambia un byte en ocho pulsos

En cada pulso, cada consola empuja hacia el cable el bit de más a la izquierda de su byte y, a la vez, mete por el otro lado el bit que llega de la otra consola. Pan Docs lo muestra con una tabla: después de un pulso hay un bit nuevo del otro lado, y después de ocho pulsos el byte propio ha salido entero y el byte de la otra consola ha entrado entero [1]. Por eso la unidad es el byte: son ocho pulsos.

Lo importante es que enviar y recibir no son dos etapas. Un tutorial de programación del Game Boy lo describe así: cada bit que se escribe tiene un bit que se lee a cambio, de modo que una transferencia equivale a intercambiar el byte de una consola por el de la otra [3]. Cada vez que mandas un byte, recibes otro.

La ventaja es la sencillez: no hay que turnarse. El límite es que, aunque una consola no tenga nada que contar, igual participa en el intercambio. Sabiendo esto, es natural preguntar qué recibe la consola cuando no hay nadie al otro lado.

4. Qué recibe una consola cuando el cable está suelto

Pan Docs dice que, con un cable desconectado, el bit de entrada de la consola que marca el ritmo empieza a leer 1 [1]. Si llegan ocho unos seguidos, el byte recibido es «todo unos», que en hexadecimal se escribe $FF.

Ese $FF no es una respuesta: nadie contestó. Es solo lo que se lee cuando la línea está vacía. Una idea razonable, y es una deducción nuestra que las fuentes no dicen, es que un programa podría sospechar que el cable está suelto si solo recibe $FF una y otra vez. El mismo manual añade que en la consola que espera la situación es distinta: sin reloj no llega ningún pulso, y de ahí la recomendación del límite de tiempo. Así, la misma desconexión se nota de forma distinta según el papel de cada consola.

5. Qué tan rápido puede ir la comunicación

En el Game Boy original, la consola solo puede producir un reloj interno de 8192 Hz, es decir, 8192 pulsos por segundo [1]. Como cada byte necesita ocho pulsos, la cuenta es 8192 ÷ 8 = 1024 bytes por segundo, más o menos un kilobyte por segundo. Es un máximo teórico que sale de la cuenta, no una medida: si el programa tarda en preparar el siguiente byte, la comunicación es más lenta. Pan Docs advierte de ese retraso: si el byte siguiente no está listo, sale otra vez el anterior [1].

Un kilobyte por segundo no basta para mandar una foto, pero sí para mensajes cortos como «puse una pieza» o «completé una línea», que es lo que necesita un juego a dos. Un pulso dura aproximadamente 0,000122 segundos (1 ÷ 8192), y los ocho de un byte, alrededor de un milisegundo.

6. Cómo un cable pensado para jugar se volvió el cable para intercambiar Pokémon

El cable ya servía para jugar contra otra persona. Lo nuevo fue usarlo para intercambiar. Según un artículo de un medio japonés, el proyecto Pokémon nació en 1990, cuando Satoshi Tajiri, entonces presidente de la empresa Game Freak, propuso a Nintendo un juego que usara la comunicación del Game Boy para cambiar los monstruos de una consola por los de otro jugador [5]. Se sabe además que Tajiri, de niño, coleccionaba insectos con sus amigos y los intercambiaban; él mismo ha dicho que el cable le recordó esa afición [6], aunque esa conexión es su relato personal.

En Japón, Pocket Monsters Rojo y Verde salió el 27 de febrero de 1996. Que hubiera dos versiones tiene una razón ligada al intercambio: para que cambiar fuera interesante, el cartucho del otro jugador debía ser distinto del tuyo [5]. (Fuera de Japón, esos juegos llegaron después como Pokémon Rojo y Azul.)

El mismo artículo afirma que, al mes siguiente del lanzamiento, el cable de enlace se vendió muy rápido, y lo atribuye a que los niños reaccionaron a la idea del intercambio. Es la interpretación del autor y no aporta cifras de ventas [5]. Lo que se ve es que el mecanismo de los ocho pulsos no cambió nada: cambió lo que se hacía con él.

7. Cómo sentir en casa el intercambio de ocho pulsos con papelitos

Con una amiga o un amigo, siéntense frente a frente. Corten ocho papelitos y dibujen en cada uno un círculo o una cruz, en el orden que quieran. Quien dice «¡ya!» es la que marca el ritmo; la otra espera. A cada «¡ya!», ambos ponen sobre la mesa su primer papelito a la vez y toman el que puso la otra persona. Háganlo ocho veces.

Al terminar, cada quien tiene los ocho papelitos que recibió de la otra persona: acaban de intercambiar un «byte» de ceros y unos. Cambien de papel y repítanlo. Si quieren probar la cuenta, midan cuánto tardan en hacer los ocho intercambios y piensen que la consola puede hacer, como máximo, unos mil intercambios de un byte en un segundo.

Fuentes

  1. Pan Docs “Serial Data Transfer (Link Cable)” (en inglés). https://gbdev.io/pandocs/Serial_Data_Transfer_(Link_Cable).html (Leída la parte principal; la página está resumida en parte por la herramienta de lectura. Sostiene el reloj, los dos papeles, el intercambio de bits, los 8192 Hz, el $FF con cable suelto y el consejo del límite de tiempo. La cuenta 8192 ÷ 8 es nuestra. Es documentación de la comunidad, no de Nintendo.)
  2. Pan Docs “External Connectors” (en inglés). https://gbdev.io/pandocs/External_Connectors.html (Leída la sección del puerto de enlace: los seis contactos y el cruce de SOUT y SIN. Documentación de la comunidad.)
  3. GB ASM Tutorial “Serial Link” (en inglés). https://gbdev.io/gb-asm-tutorial/part2/serial-link.html (Leído solo el comienzo de la página, vía extracto: transferencias de un byte, bidireccionales, como un intercambio de bytes.)
  4. Nintendo (Japón) “Game Boy, periféricos (cable de comunicación)” (en japonés). https://www.nintendo.co.jp/n02/dmg/hardware/option/acce.html (Leída vía resumen: el cable DMG-04A para el Game Boy original. La página no da la distribución de los hilos.)
  5. Bunshun Online “Ya sabías que el 27 de febrero se lanzó Pokémon” (en japonés; la traducción es nuestra). https://bunshun.jp/articles/-/1548 (Leído el cuerpo del artículo: propuesta de Tajiri en 1990, lanzamiento del 27 de febrero de 1996, versiones Rojo y Verde, venta del cable al mes siguiente. El artículo cita un libro que no leímos.)
  6. Wikipedia “Satoshi Tajiri” (en inglés). https://en.wikipedia.org/wiki/Satoshi_Tajiri (Leído solo el comienzo. Solo respalda que Tajiri atribuye al cable la conexión con su afición infantil a los insectos; por eso lo presentamos como su relato.)