Sistema para prevenir la ejecución de memorias no autorizadas en Game boy

Así es como reza el titulo de la patente de Nintendo para evitar la carga de cartuchos sin licencia en Game Boy.

US5134391-3

Deberiamos por empezar analizando como funciona este sistema, a simple vista podemos ver como al encender la maquina con un cartucho insertado, el logo de Nintendo aparece en la parte superior de la pantalla desplazándose lentamente hasta el centro de la misma, para terminar con un sonido de dos notas “do-lin”, inmediatamente después se inicia el juego.

boot_gb

Pues si amigos, esta pequeña “animación” no es ni mas ni menos que el sistema de protección que incluye la Game Boy en su interior, básicamente al arrancar la Game Boy esta inicializa la pila, pone a cero toda la VRAM, y copia sobre esta los primeros 256 bytes de la cabecera del cartucho, que corresponden al logo de Nintengo, por eso cuando encendemos la maquina sin cartucho no aparece el logo. Se completa con el desplazamiento, las dos notas, y por fin llegamos al Nintendo Logo Check.

Esta rutina comprueba que el cartucho contiene el logo de Nintendo en la posición correcta, comparándolo byte por byte con la ROM interna si no se supera esta comparación la maquina entra en un bucle, si coincide y todo va bien se pasa a una comparación por cheksum que en caso de fallar bloquea la maquina en un bucle o en el caso de que la suma de los cheksum sea cero pasa a iniciar el juego contenido en el cartucho.

US5134391-6

Esto solo es una explicación superficial, sin entrar en detalles técnicos. Si queréis profundizar mas en el tema, existe un articulo excelente escrito por el programador del emulador Real Boy.

Este proceso, no debe ser entendido como un sistema anticopia, si no como un sistema para evitar el lanzamiento de juegos sin licencia, recordemos que esta fue una de las mayores lacras sufridas por Nintendo en su NES/Famicon.

Supongo que, al igual que hizo SEGA, ante un juez debe ser difícil de explicar por que los cartuchos de tu empresa contienen un Copyrigth del fabricante de la maquina cuando no cuentas con él.

En el caso de SEGA el mensaje incluido no dejaba lugar a dudas:

GMD-TMSS(U)

Sirva como ejemplo su uso en este caso legal de Sega Enterprises Ltd. contra Accolade Inc.

Lo mas gracioso del tema, es que el sistema contiene un grave fallo de diseño que permite cargar cualquier logo en pantalla, debido a que el area de memoria que contiene el logo original se lee dos veces, lo cual permite cambiarlo por un logo personalizado en mitad del proceso y validarlo como correcto. La empresa china Sachen uso esta técnica para publicar varios cartuchos, que muestran su propio logo al arrancar.

Como curiosidad final me gustaría destacar como se consiguió extraer la rutina completa de este Bootstrap, usando para ello un microscopio.

Anuncios

2 comentarios

  1. Guau, asombroso! Muy buena explicación!

  2. […] de investigar como funciona el Nintendo Logo Check, me ha picado la curiosidad de como esta diseñada la estructura de una ROM/Cartucho de Game […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s