Diferencia entre revisiones de «Códigos Game Genie»
Página creada con '=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...' |
Sin resumen de edición |
||
Línea 109: | Línea 109: | ||
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. | 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. | ||
<center>''Agradecimientos'': | |||
Texto extraído de [http://www.retrones.net/ aquí], notas técnicas de The Mighty Mike Master.</center> |
Revisión actual - 22:46 13 ago 2011
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 :-)
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.