El glitch de Mew, cómo funciona y por qué nos permitía capturar al Pokémon imposible

El glitch de Mew, cómo funciona y por qué nos permitía capturar al Pokémon imposible
Publicado por: Adrián Ruiz

Si le preguntas a cualquiera por qué bugs conocen más muchos te señalarán a juegos como ‘Assassin’s Creed‘ y ‘Cyberpunk 2077‘. Pero mucho antes de la llegada de los Triple A y los juegos de alto presupuesto ya era habitual encontrarse fallos puntuales en juegos con una programación demasiado compleja. Es importante matizar que por un lado están los bugs, fallos en la programación que impiden el funcionamiento del juego, por otro lado los glitchs, errores puntuales del código que no tienen ningún efecto grave.

Ahora, si le vuelves a preguntar a cualquiera por un fallo específico de un juego que todo el mundo conozca, la mayoría probablemente te señalará uno de los tres gliths más famosos de la historia: la Isla Fallo, Mew y MissingNo. Mientras que MissinNo era un Pokémon generado mediante un bug que simulaba a un Pokémon real, la Isla Fallo seguía un ejemplo similar generando un escenario con elementos decorativos aleatorios.

Pero si duda el glitch de Mew se lleva toda la atención. De trata de un glitch que se ejecutaba con una precisión matemática muy ingeniosa, y que además fue clave en el éxito de Pokémon: de no existir, la saga no se habría convertido en el fenómeno que es hoy en día.

Cómo realizar el glitch de Mew

Para ejecutar el glitch de Mew no había más que engañar a la máquina con una serie de acciones que en el ámbito de la programación sumaban ciertos valores necesarios para hacer que apareciera un Mew como Pokémon salvaje.

El glitch consistía en escapar de un combate contra un entrenador justo antes de que entrásemos en su campo de visión, haciendo que el juego inicializara en su código la secuencia de eventos para iniciar un combate. Si se hacía bien el entrenador rival nos veía con el signo de exclamación, pero al haber huido del combate este no ocurriría. Esto haría que más adelante y tras otra serie de acciones determinadas el juego tratase de corregir la ausencia de un combate pendiente, y para ello haría aparecer un Pokémon salvaje el cual dependería de ciertos parámetros y estadísticas en función de los pasos anteriores.

Lo primero y lo más conveniente, podemos enfrentarnos a todos los entrenadores de las Ruta 24 (Puente Pepita) y Ruta 25, excepto los que indicamos en la imagen. El proceso a seguir era el siguiente.

Entrenadores que hemos de evitar en las rutas 24 y 25
Entrenadores que hemos de evitar en las rutas 24 y 25
  • Capturar un Abra que tuviera Teletransporte (o tener un Pokémon con dicha habilidad).
  • Vamos a Ciudad Celeste y guardamos la partida.
  • Nos dirigimos a la Ruta 24, cruzamos el Puente Pepita y vamos hacía el primer entrenador que había que evitar.
  • Nos colocamos de modo que el entrenador esté fuera de la pantalla, pero que dando un solo paso ya entraríamos en su línea de visión.
  • Damos un paso y rápidamente pulsamos Start para abrir el menú. Nos dirigimos a nuestro equipo y hacemos Teletransporte con nuestro Pokémon.
  • Reapareceremos en Ciudad Celeste, volvemos a cruzar el Puente Pepita pero esta vez nos dirigimos hacía el segundo entrenador que había que evitar.
  • Entramos en su línea de visión, pero hemos de hacerlo de modo que el entrenador de mínimo un paso hacía nosotros. Si nos colocamos justo delante de él el juego se congelará.
  • Vencemos al entrenador, este tendrá solo un Slowpoke de nivel 17.
  • Volvemos a Ciudad Celeste con Teletransporte.
  • Nuevamente, nos dirigimos hacía el Puente Pepita y tan pronto entremos en la Ruta 24 se nos abrirá el menú automáticamente.
  • El juego iniciará un combate contra un Mew salvaje de nivel 7. Podemos capturarlo sin problemas y este se registrará en nuestra Pokédex sin generar ningún problema en el juego

Como podemos ver, no era un glitch que requiriera mucho esfuerzo y lo más difícil básicamente era lograr abrir el menú antes de que iniciara el combate contra el primer rival. Más interesante todavía es el hecho de que se pudiera realizar en Ciudad Celeste, la tercera ciudad de la aventura, con un Mew que aparecía con nivel 7, ideal para añadirlo al equipo casi desde el comienzo del juego.

Con el lanzamiento de ‘Pokémon Rojo’, ‘Pokémon Azul’ y ‘Pokémon Amarillo’ en la consola virtual de Nintendo 3DS desde GameFreak tuvieron que hacer frente a un problema complicado: el idioma de los juegos. Al no ser multidioma y lanzar una versión distinta por cada región, algo que habitual en Pokémon durante generaciones, optaron por lo más sencillo y lanzaron los juegos originales para cada país sin realizar modificaciones. Esto se traduce en que el glitch de Mew sigue existiendo en las versiones para Nintendo 3DS, y como ya hemos dicho, no tiene consecuencias para la partida.

¿Y por qué ocurre todo esto?

Aquí entra en materia un poco de astucia, pero sobre todo depuración de código. Cada vez que realizamos una acción el juego guarda un registro y ejecuta un script de una serie de condiciones. La clave está en que los entrenadores rivales tienen un alcance para vernos, pero algunos se encuentran fuera de la pantalla antes de entrar en su línea de visión. Cuando estos entrenadores aparecen en pantalla el juego primero debe cargar su sprite y aquí tenemos una oportunidad para interrumpir la secuencia abriendo el menú. En otras palabras, el juego guarda un registro de que se ha iniciado una secuencia de combate, pero no llega a completarla.

Cuando interactuamos con el primer entrenador, debemos abrir el menú antes de que aparezca la exclamación del rival
Cuando interactuamos con el primer entrenador, debemos abrir el menú antes de que aparezca la exclamación del rival

Para entender un poco esta dinámica, cuando interactuamos con un entrenador el juego inicia una secuencia de combate diciéndole al juego que cuando se cierre el diálogo debe empezar el combate. Por otro lado el oponente contra el que nos enfrentaremos viene determinado por una serie de parámetros que determinan si nos enfrentamos contra una persona y cuál es equipo, o un Pokémon salvaje y cuál es nivel.

En el momento en que abrimos el menú e interrumpimos la orden de iniciar un combate el juego necesita terminar la secuencia, por lo tanto, tendremos que darle un combate para restablecerse. Pero es importante hacerlo bien, y recordemos cómo interpreta y ejecuta sus órdenes. Por lo general la secuencia de un combate sería algo así: Exclamación del rival > Este camina hacía ti > Diálogo > Combate. Si nos colocamos justo delante del rival la secuencia pasaría directamente de la exclamación al diálogo.

Pero cuando interactuamos con el primer entrenador, por necesidad, lo hacemos a distancia, así que el juego inicia una secuencia en la que el entrenador debe caminar hacía nosotros. Por eso mismo es importante que al interactuar con el segundo entrenador lo hagamos también a la distancia para dejar que camine: recordemos, el juego está intentando completar la primera secuencia. Si nos colocásemos justo delante del segundo entrenador no iniciará una nueva secuencia en la que el rival deba caminar e interpretaría que este sigue caminando (infinitamente) hacía nosotros, nunca llegaría a iniciar el diálogo, y por ende, el combate.

Cuando interactuemos con el segundo entrenador, debemos darle espacio para que camine hacía nosotros
Cuando interactuemos con el segundo entrenador, debemos darle espacio para que camine hacía nosotros

Recapitulando, el juego ha guardado una serie de valores en su memoria: la orden de abrir el menú, una secuencia de combate que no ha terminado, y un código de identificación del segundo oponente y su equipo. Otro detalle no menos importante, el juego guarda todos estos registros asociados al lugar donde ocurre todo, las rutas 24 y 25.

Cuando luchamos contra el segundo entrenador el cual tiene un Slowpoke el juego guarda en su memoria un valor de 12 bytes con el siguiente código: 8E 11 00 3C 00 1E 00 1D 00 1C 00 15.

  • 8E es igual para todos los combates.
  • 11 es el nivel del Slowpoke rival (17 en decimal)
  • Los siguientes diez bytes son las estadísticas del Pokémon: Salud / Ataque / Defensa / Velocidad / Especial.
  • El byte 15 en notación decimal estándar significa 21, y representa el valor Especial del Pokémon. Este byte suele almacenarse en una memoria llamada CD2E (Rojo/Azul) o CD2D (Amarillo)
  • Además, este bloque del código está rodeado por otros dos bytes de 07 en cada lado.

En el momento en que luchamos contra el segundo entrenador y derrotamos a su Slowpoke el juego da por resuelta la secuencia del primer combate y ahora hay otra secuencia pendiente. La diferencia es que en esta ocasión tiene almacenada información del último combate, que es el código anterior. Al regresar a la ruta 24 limpiará su registro iniciando una secuencia de combate que toma como referencia el byte de CD2E/CD2D junto a otros dos bytes 07, es decir, 15 y 07. Como el identificador hexadecimal de Mew es 21 y la ausencia del resto de bytes impide asociar el resto de parámetros, hará que se inicie un combate contra un Mew salvaje de nivel 7.

Mew salvaje apareció

En otras palabras, al luchar contra un Slowpoke que tiene un Especial de 21 (15 en hexadecimal), esto hará que el juego nos devuelva un Mew cuando trate de completar la secuencia de combate de la ruta 24 que iniciamos con el primer entrenador y que empezó con el menú abierto. Si lucháramos contra cualquier otro Pokémon con otro valor Especial o usáramos un ataque como Gruñido contra Slowpoke, estaríamos modificando los parámetros y obtendríamos otro resultado, desde otro Pokémon hasta un nivel distinto.

Explorando el glitch de Mew

Si te interesa conocer mucho más a fondo el apartado técnico de este glitch y te defiendes con el inglés, a día de hoy el canal de YouTube stacksmashing tiene la mejor explicación que hemos visto: no deja ni un solo detalle y explora cómo se comporta el código original.

A continuación te dejamos su vídeo:

¡Síguenos!

Si te ha gustado el artículo síguenos para no perderte nuestras publicaciones:

Deja un comentario:

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Accesibilidad:
Modo oscuro
Tamaño fuente (Beta)
Restablecer
Más información