Ingeniería Inversa "extrema" al clásico Tetris de Nintendo

Captura de pantalla 2014-01-30 a la(s) 22.22.49

Este espectacular artículo de ingeniería inversa que puedes ver completo en el enlace original mechanics of how Tetris works, then builds an AI to play the game, explica al detalle el mecanismo del clásico de Nintendo de 1989, Tetris. Para llevar a cabo este análisis, el autor del artículo explora a fondo y con un detalle realmente increíble, la ROM original. Como la NES estaba basada en el microprocesador MOS 6502, toca volver a desempolvar nuestros libros de nuestro querido ensamblador 6502.

Captura de pantalla 2014-01-30 a la(s) 22.26.13

El artículo detalla como los bloques (llamados "Tetriminos") son creados y como se mueven por la pantalla. También hace un especial análisis del registro llamado linear feedback shift register, el cual es importante ya que se encargaba se generar los números aleatorios.

Pero el autor no se queda en el análisis de cómo funciona el juego, también nos muestra un algoritmo para programar la IA de Tetris. Esta IA está implementada en LUA  y funciona dentro de un emulado de NES llamado FCEUX NES/Famicom. Esta IA evalúa todas las posibles posiciones donde colocar cada nuevo "Tetriminio" eligiendo la mejor basándose en un criterio numérico. Y estos criterios son generados por programa de optimización llamado particle swarm optimization.

Captura de pantalla 2014-01-30 a la(s) 22.22.28Mapa de los "puntos calientes" que utiliza la IA para analizar la posición de las piezas del juego

El código fuente de la AI está disponible y todo lo que necesitas para ejecutarla es gratuito, excepto la ROM de Tetris.

Prepara el bisturí y echa un vistazo a esta espectacular disección de un clásico.

mechanics of how Tetris works, then builds an AI to play the game

Vía HackADay

Y como extra, aprovechando que es viernes y que mi gran amigo tuxotron pondrá su documental, después podéis ver este otro sobre el creador del clásico Tetris: