Programando a bajo nivel

Con motivo del seminario de sistemas empotrados que recibí como parte de mi preparación de doctorado he tenido la oportunidad de iniciarme en la programación de la Game Boy Advance. Y creo que por primera vez he empezado a entender por qué hay gente a la que le encanta trabajar a tan bajo nivel.

En general, me gusta programar en alto nivel, centrarme en el problema que quiero resolver sin preocuparme por los entresijos de la máquina, delegar en el compilador o en el intérprete todos esos pequeños y complicados detalles de implementación asociados al hardware. A fin de cuentas, en eso consiste la abstracción, uno de los pilares básicos del diseño de software.

El lado negativo de esta filosofía es que, como programador, pierdo el control sobre cómo funcionan aspectos de tu programa. Yo decido el flujo general de la aplicación, pero debo confiar parte de su funcionamiento básico a la implementación que han realizado otras personas de librerías, APIs y funciones del sistema operativo. Y mientras esa llamada al sistema, esa función, esa librería, etc funciona como yo espero que funcione, las cosas van bien; cuando no lo hacen, es cuando tengo que romperme la cabeza para saber qué está pasando.

No ocurre lo mismo al programar en bajo nivel, es decir, programar cerca del lenguaje que hablan las máquinas. Aquí tengo prácticamente control total sobre el comportamiento del hardware, y mi único límite es el propio hardware en sí. Le digo a la GBA que quiero un píxel de color rosa en la esquina superior izquierda de la pantalla, y la GBA obedece. Es una sensación de poder que no había experimentado hasta ahora con ninguna máquina.

Trabajar a este nivel no es en absoluto sencillo. Primero, exige conocer con bastante minuciosidad cómo es la máquina para la que vas a programar; esto supone leer y entender bastante documentación. Por último, resulta a veces un engorro, porque tienes que saber muy bien qué es lo que estás haciendo, porque las cosas más sencillas cuestan más de lo esperado, porque al problema que quieres resolver se le suman los pequeños problemas y limitaciones del hardware.

Pero todas estas dificultades tienen su recompensa. Al final, te sientes casi como un ser todopoderoso que se pasea tranquilamente por la circuitería activando un registro aquí o allá, moviendo bits de un lado para otro, exprimiendo el potencial puro que te ofrece la máquina. Está a tu total disposición, y el resultado final sólo depende de tu habilidad.

En Tron los programadores eran considerados dioses dentro del mundo binario en el que se desarrolla la película. Hacia el final, el propio Tron, el programa que da nombre al filme, recibe un mensaje directo del programador, que en el mundo real no hace más que teclear órdenes en la línea de comandos de un ordenador. Mientras en el mundo binario, un fuerte haz de luz rodea a Tron, que recibe las órdenes de una voz como divina, y recoge un disco de datos que desciende lentamente desde el cielo. Mira tú por dónde no es una metáfora tan descabellada.

EDITO: Cambio la foto de Tron, que la han borrado.
EDITO: Elimino definitivamente la foto. Se ve que con el estreno próximo del nuevo Tron, andan pesaditos... :P

Zelda y los cambios de estética

En Revogamers se ha montado un curioso debate en torno a una noticia que tiene toda la pinta de ser completamente falsa, pero que es bastante sintomática de cómo están las cosas en torno a la joya de la corona de Nintendo, The Legend of Zelda. Cuando faltan apenas unos días para el E3, sale a la palestra esta supuesta entrevista a Aonuma, actual director de la saga, en la que se nos anuncia un cambio radical en el devenir de la serie.


Como poco, este hipotético Zelda apostaría por una estética steampunk, retrofuturista, un ambiente oscuro en el que transcurriría la historia de un héroe atormentado por su propia psique. Atrás queda el Hyrule de verdes praderas y blancos castillos; la tierra marrón y yerma y el humo de las máquinas de vapor serían las constantes de este Hyrule atrapado por la revolución industrial.

No he leído toda la entrevista porque prefiero que, de ser verdad, sea Nintendo quien me sorprenda en el E3 (sí, me gusta sonreír como un tonto bobalicón mientras los estudios de desarrollo descargan toda su fuerza mercadotécnica en esa feria venida a menos —llamadme iluso). Pero he estado ojeando los comentarios tanto a favor como en contra de este, mientras no se diga lo contrario, controvertido what-if.

¿Qué queréis que os diga? A mí me gusta. Sí, me parece, que la saga necesita un cambio de rumbo. Y os lo dice alguien que a jugado a tres o cuatro títulos con el membrete The Legend of Zelda. Me parecería bien que Aonuma pusiese toda la carne en el asador: hasta aquí todo el pescado vendido, chicos, se acabaron los tiempos felices de las maripositas, y los trajes verdes, y las flores que bailan, etc etc; os traigo la desolación, la caída de un reino ahogado por su tecnología, os traigo un héroe ambiguo, una historia sin buenos ni malos... Algo verdaderamente profundo, digno de contar. Algo... vale, vale, de momento no son más que sueños.

No sería Zelda la única saga que en un momento dado ha decidido dar el paso y cambiar de estilo, ambientación o de protagonistas. Hay un precedente bastante reciente con Jak & Daxter, que pasó de un estilo amable, preciosista y familiar (infantil si queréis) a una estética radicalmente diferente en Jak II, similar a la que plantea este nuevo supuesto Zelda: un entorno yermo y corrupto, una ciudad oscura e inhóspita gobernada por un tirano con mano (y cabeza) de hierro, y un Jak, el protagonista, más violento gracias a sus adquiridos poderes de eco oscuro —y mucho más hablador, aunque tuviera pocas cosas interesantes que contar—. Esta renovación propició un cambio más profundo en la jugabilidad: bebiendo de las fuentes de GTA III, implementó con mayor o menor acierto un entorno sandbox por el que hacer pulular al jugador, cumpliendo misiones aquí y allá.

Cabe decir que todos esos cambios no fueron en absoluto de mi agrado, y tuvo que ser Jak III el que hiciera que recuperara mi esperanza en esta saga (aunque enviaran la historia de los precursores a hacer gárgaras —al menos sabemos el porqué de la transformación de Daxter). Da igual, el juego fue un éxito, y alimentó la tendencia por aquella época de que los juegos para adultos tenían que poner a tipos duros a los mandos del jugador. En realidad, los más creciditos no necesitamos ninguna de estas parafernalias para sentirnos mayores, pero a los adolescentes les chiflan. Ainsss....

En fin, creo que los cambios, pese a que revienten a más de un fan, son necesarios para mantener la buena salud de una saga, siempre que sean llevados con inteligencia. Para jugar a más de lo mismo, ya tenemos los emuladores, la consola virtual, el XBLA y el Megaman 3, quiero decir, 9.