Códigos Game Genie

De WikiNES-77
Saltar a: navegación, buscar

Introducción

El Game Genie es el trucador de cartuchos mas conocido de la NES. Era un aparato que se conectaba entre el cartucho y la NES. De tal forma que cuando encendías la consola, lo primero que te aparecía era lo que se llamaba "la pantalla de códigos". En esta pantalla aparecía en la parte superior unas letras, y en la parte inferior tres líneas donde ibas colocando tu cadena de códigos. De esta manera, cada línea de códigos daba un efecto al juego, pudiendo hacer hasta tres efectos diferentes en el juego.

Era una maravilla, todos esos juegos que se resistían podían acabarse fácilmente con este aparato, ya que podías meter un código para que nunca te matasen, para que las vidas durasen infinitamente, para empezar en la pantalla que quisieras, etc...

El Game Genie venia con un libro de instrucciones que te explicaba como podías hacer tus propios códigos y trucos además de una lista de juegos con códigos muy útil.

Recuerdo que CodeMaster, la compañía que creo este periférico no tenia licencia para tal, y se vio involucrado en sendos juicios interminables que no hicieron mas que retrasar el lanzamiento del aparato un año. Finalmente Nintendo perdió y CodeMaster pudo sacar a la venta el Game Genie.

Mas suerte tuvo en Europa, pues las prácticas monopolistas de Nintendo no tenían efecto aquí. Ahora bien, Nintendo no se quedó con las manos cruzadas y empezó ha hacer mala publicidad de este aparato en las revistas de video juego, tales como Hobby Consolas, la cual hizo un buen articulo sobre el aparato y que tan sólo un mes después publicó una carta advirtiendo que el Game Genie podía estropear y volver inutilizable los juegos de la NES, además de quitarles la garantía. Esto hizo que mucha gente se echase para atrás a la hora de comprar el invento que costaba unos 30 €.

La enemistad de CodeMaster con Nintendo tiene su historia, pero de eso ya hablaré en otro momento. Si alguno de ustedes encuentran el Game Genie no duden en conseguirlo, es una maravilla. No obstante, y aunque no lo he comprobado personalmente, cuídense mucho de la advertencia de Nintendo en cuanto a eso de que puede acabar con sus cartuchos.

Buscando por internet he encontrado este archivo, tienes muchos códigos de nes y snes. Espero que os sea de utilidad :-)

Bajar Archivo


Notas Técnicas

Por The Mighty Mike Master con la ayuda de Cheatmaster.

Este aparato que como todos sabemos es para conseguir ciertas ventajas entrando unos códigos en los juegos funcionaba con unos codigos de entre 6 y 8 letras. Este código era traducido a una dirección de memoría que apuntaba a un espacio del juego (0x8000-0xFFFF), gracias a esto el número de códigos es infinito (en teoría).


6 carácteres

Se tranforman en una dirección de 15 bits y en un dato de un byte. Es de 15 bits ya que el último bit se usa para usar la mitad superior de la CPU. Cuando la CPU intenta acceder a una parte de código, el game genie lo detecta y subtituye el valor real por el del game genie.

Cada código se pasa a su valor hexadecimal:

  • A 0x0
  • P 0x1
  • Z 0x2
  • L 0x3
  • G 0x4
  • I 0x5
  • T 0x6
  • Y 0x7
  • E 0x8
  • O 0x9
  • X 0xA
  • U 0xB
  • K 0xC
  • S 0xD
  • V 0xE
  • N 0xF


Entonces viene la parte difícil que consiste en cambiar el dato . Se pueden cambiar mucho la dirección y los datos del Game Genie, para cambiar que un juego te de 5 o 9 vidas la única diferencia es un carácter. Para cambiar este caracter no hacen falta grandes conocimientos. Con lo cual las posibilidades son casi infinitas.

Para decodificar los 6 carácteres (los 6 valores hexadecimales) se sigue el siguiente pseudocódigo (se asume que se conoce el lenguaje C):

        address = 0x8000 + 
              ((n3 & 7) << 12)
            | ((n5 & 7) << 8) | ((n4 & 8) << 8)
            | ((n2 & 7) << 4) | ((n1 & 8) << 4)
            |  (n4 & 7)       |  (n3 & 8);

Este algoritmo simplemente combina los 3 bits más pequeños a partir de un nibble del 4º bit y el bit superior de otro nibble que pone el resultado en otro sitio. Aquí está el algoritmo de los datos:

        data =
             ((n1 & 7) << 4) | ((n0 & 8) << 4)
            | (n0 & 7)       |  (n5 & 8);

Ejemplo: El valor es: GOSSIP.Este código se usa en el Ghosts 'n Goblins para empezar a jugar con una arma muy divertida. Se puede ver como se traduce el código:

           n0   n1   n2   n3   n4   n5
           G    O    S    S    I    P
          0x4  0x9  0xD  0xD  0x5  0x1
         0100 1001 1101 1101 0101 0001

         address = 0xD1DD, data = 0x14
        

Cuando la CPU intenta leer la dirección 0xD1DD, el game genie da de vuelta el byte: 0x14


8 carácteres

Son muy similares a las de 6 bits excepto en que comparas el valor de un byte que necesita ser decodificado. Esto es debido a que hay juegos que usan mappers para aumentar la cantidad de código y datos. Puesto que se tiene que usar un banco de memoria de intercambio (PRG) no se puede siempre acceder a la misma dirección de memoria, con lo cual lo que se hace es igualar y comparar el valor de los datos.

Para decodificar una dirección de 8 carácteres se usa el mismo código que una de 6. El algoritmo solo cambia un poco en la decodificación de datos:

        data =
             ((n1 & 7) << 4) | ((n0 & 8) << 4)
            | (n0 & 7)       |  (n7 & 8);

El algoritmo decodifica y compara los resultados:

        compare =
             ((n7 & 7) << 4) | ((n6 & 8) << 4)
            | (n6 & 7)       |  (n5 & 8);

Ejemplo: El valor es: ZEXPYGLA. Funciona en el Dr. Mario para poder limpiar una columna o fila con solo 3 colores iguales, en vez de 4. Vamos a ver como funciona el algoritmo:

           n0   n1   n2   n3   n4   n5   n6   n7
           Z    E    X    P    Y    G    L    A
          0x2  0x8  0xA  0x1  0x7  0x4  0x3  0x0
         0010 1000 1010 0001 0111 0100 0011 0000

         address = 0x94A7, data = 0x02, compare = 0x03

Cuando la CPU lee la dirección 0x94A7 y el byte real que esta en esa dirección es 0x03, luego el Game Genie devuelve 0x02. Si el byte es algo como 0x03, el byte será devuelto.



Agradecimientos: Texto extraído de aquí, notas técnicas de The Mighty Mike Master.