Emulación: Retrospectiva (I)

Visitando el sitio de Pete Bernert –Brillante coder de plugins para emuladores de psx–  al ver sus “Fairy Tales” vinieron a mí memorias de una época dorada, nostálgico quizas, recordé, al menos, lo fue para mí, los “Años Maravillosos” de la emulación de consolas en la PC; por allí por finales de los 1990s e inicios de los 2000s.  Aquellos tiempos que, ya sea por nostalgia, por falta de oportunidades, o por retarse a uno mismo se pasaba horas esperando para que, a través de nuestro modem de 33.3 K conectado por puerto COM1, terminara de bajar el bendito ROM de super nintendo de 6 MiB/48mbit (no te olvido  Tales of Phantasia), y luego, justificarlo en fin de mes al venir la carísima factura de teléfono.

Gracias a las extraterrenales habilidades de  ingeniosos hackers, muchos pudimos conocer, terminar y disfrutar varios títulos que nunca pudimos jugar en la consola original, ya sea por que nunca encontramos quien nos los “traficaran”, o no los encontramos en la tienda por inventario agotado, o simplemente a las “brillantes” gerencias de –inserte aquí su compañía favorita de videojuegos– no se les antojaba traerlos a América.  En fin, muchas pueden ser las causas, y la solución mas sencilla, irse a buscar el ROM, de ser necesario ver si había algún parche para traducirlo, y a jugar.

Pero muchas veces no era solo así, qué aburrido hubiera sido para muchos de nosotros sólo colocar el ROM, darle “play”  y jugar.  Habíamos muchos, que teníamos máquinas ultra limitadas y con bajo poder de procesamiento respecto a la tecnología de la época, en donde, con las configuraciones default; o no corría bien el juego, o simplemente no corría.  Había que tener el tiempo y las ganas para poder “jugar” con las configuraciones y/o parámetros del emulador en cuestión para que, con nuestros modestos equipos al menos funcionaran los ROMs que deseábamos jugar,  qué mejor si eran de SNES…

Sí el SNES, esa maquinita gris con tan buenos juegos de la era de 16 bits, y para 1999 ya casi obsoleta en el mercado, pero muy bien emulada gracias al esfuerzo de los hackers anteriormente mencionados, que la tenían como de sus favoritas.  Aunque ya no viví la era de los emuladores mas primitivos como ESNES o NLKE, tuve que probar varios otros derivados y/o más mosdernos para ver cual se adecuaba al bajo poder de procesamiento y escasa memoria de ordenador que poseía en esa época (12mb de RAM WTF!). Las más factibles soluciones eran SNEMUL, Snes9x o ZSNES,  el cual SNEMUL tenía una bonita GUI, pero los juegos corrían lento y era algo incompatible.  Snes9x era bueno, y con excelente compatibilidad, aunque también era demasiado lento para mi vieja máquina, tambien por alguna extraña razón no me permitia usar el modo VESA de mi tarjeta gráfica XGA2, además que por la escasa memoria que tenía no me permitía cargar ROMs mayores a 2 MiB/16mbit.

ZSNES, era la salvación, el más rápido para los roms (gracias a que estaba hecho en una “cosa rara” para mí en ese tiempo llamada “Assembler”), consumía poca memoria y además funcionaba de maravilla el modo VESA, con lo que ya tenía mis 15 bit de color y transparencia en mis jueguitos.  Aunque tuve problemas de emulación por no contar con tarjeta de audio en la vieja PC, había un excelente chapuz para emular la salida de audio.  El emulador mejoró, se portó para múltiples plataformas como BSD, Linux y Windows, le agregaron bonitos efectos gráficos de post procesados, etc. Por todo esto, es y será el emulador que siempre instale por defecto en cualquier máquina basada en  intel x86, aunque ya no haya un Release oficial desde hace años –que no creo que necesiten pues la compatibilidad es casi perfecta.

Pasaron los años, actualmente el ZSNES sigue en el eterno desarrollo por hacerlo más portable a otras arquitecturas no x86, y gracias a la portabilidad inicial de SNES9x, éste otro sí fue portado a diferentes plataformas, que van desde x86-64 nativo hasta arquitecturas PowerPC como PS3 o el Wii, MIPS como el PSP o ARM como los “ifonos” y “droides”.

Cabe mencionar que nomás liberaron el código fuente de ZSNES y lo descargué para curiosear “las tripas” de dicho emulador, me pareció (y me sigue pareciendo) bastante complejo, eran cientos de archivos escritos en assembler, unos otros escritos en c, makefiles hechos a mano, etc.  Y gracias a revisar esas “tripas”  estudié cómo interactuaba ese monton de archivos de assembler, sus macros y llamadas a funciones de C, aprendí qué era un Makefile, cómo compilar con éstos en entornos windows usando DJGPP  (que era el compilador de c que recomenadaban para ese port) y NASM,  y mínimas modificaciones a los “strings” en los archivos .asm para hacer una version semi traducida que nunca fue publicada. Aunque ahora casi solo uso Snes9x en mis gadgets para jugar… mucho de lo que aprendí en mi “juventud” se lo debo a ZsKnight y su fantásticamente caóticos asm de zsnes.

Anuncios

El poder del Open Source arrodilla de nuevo al modelo cerrado…

Bueno, muchos diran… otro post alabando al modelo de desarrollo Open Source (independientemente que sea “libre” o no “libre” y sus interpretaciones por los fans de RMS), sin embargo hace pocos dias ocurrió un evento importante dentro de este contexto, el cual me logró hacerme dudar más y más de los modelos de desarrollo cerrados… la capacidad del emulador Dolphin para emular en High Definition (720 lineas horizontales)una de las últimas obras maestras de Nintendo… Super Mario Galaxy.

Super Mario Galaxy en HD

Super Mario Galaxy en HD

Esto demuestra que trabajando en conjunto, un monton de geeks logran darle una patada en el culo a una de las empresas de entretenimiento electrónico con más poder actualmente, y aparte, de las más cerradas del mundo. Logrando mejorar la experiencia gráfica a puras líneas de código en C++, de la consola Wii, que fue diseñada para funcionar únicamente en Standard Definition (480 lineas horizontales, tremendo error por cierto), y que, exceptuando por unos pocos errores gráficos como algunos pocos efectos de luz, este juego corre de maravilla (ya lo comprobé).  La verdad nunca me imagine que fuera a pasar tan rapido, y todo esto, gracias a que dicho emulador, aparte que empezó con buen pie (y que ya lleva años en la escena intentando emular el Gamecube), tomaron la gran decisión de liberarlo bajo la GPL, con lo cual queda demostrado que el trabajo colaborativo a travéz del open source es un éxito.

Obviamente este solo es un ejemplo de éxito del open soure entre un montón (entiendase montón como el kernel de linux, gnu utils, etc, etc, etc…) pero me gusto mucho, pues aparte de ser gamer y estar en la escena de la emulacion ya casi 10 años, con solo ver la GRAN actividad que esta teniendo dicho proyecto en el listado de commits del svn, dan ganas de unírseles a apoyarlos…

Nintendo y el modelo abierto…

Me hago una pregunta… Si el software de sistemas (sistemas operativos, servidores http, etc) es tan exitoso siguiendo el modelo FOSS, ¿Por qué en los videojuegos de consola no es lo mismo?

Mencione una palabra clave “cerrada”, se piensa que los sistemas cerrados  como los IBM y otras corporaciones que dominaba el mercado de computadoras en los 70s son cosa del pasado, ¿estamos aún lejos de la realidad? Quiza la respuesta nos la dá una de las empresas de software y hardware, de las más cerradas tecnológicamente hablando,  líder actualmente en el mercado de consolas de videojuegos portátiles y no portátiles de la actual generacion.  todo apunta a  una sola marca: Nintendo.

Todo esto por que Nintendo, lanzó un parche para evitar la instalación de software “no licenciado” en su consola Wii. Algo que se viene haciendo desde hace un tiempo al aprovechar un “bug” de overflow en la memoria, con una técnica llamada “Twilight Hack“. Algo que ya habia intentado cuando lanzo su Firmware 3.3, que fue crackeado horas despues.

Wii want to hack (wii queremos hackear)

Wii want to hack (wii queremos hackear)

Todo esto con el pretexto de evitar la piratería de WADS (Wiiware/Virtual Console) y canales “no firmados”, entre éstos el muy famoso “Homebrew Channel” (que permite tener todos los homebrews en directorios dentro de una memoria SD para cargarlos de una manera sencilla. evitando tener que usar el twilight hack cada vez que querramos usarlos en la consola, aparte de que hace menos de un mes, se “filtro” un homebrew que permitía leer ISOS de juegos de wii, sin necesidad de ningun mod chip en la consola.

Que tan bueno o malo es esto? Nintendo sigue con su esfuerzo de detener el nuevo tipo de piratería que se está haciendo en su consola. Pero no solo eso… nintendo pretende mantener el control que desde hace más de 25 años ha mantenido en el mercado. con el pretexto (y muy bueno en realidad) de que la hegemonía de la empresa se ve amenazada. pues es muy conocido de todos la calidad de software que Nintendo crea, sobre todo al hablar de su franquicia principal, Mario, y demás franquicias como Zelda, Metroid, etc. las cual son un éxito por la alta calidad de entretenimiento que otorgan.  Pero qué decir del software creado por terceros que “licencia” bajo su famoso “seal of quality”?

Actualmente he visto software muy bueno desarrollado por personas “no licenciadas” y sin el dichoso “seal of quality” para el wii, muchos de estos se basan en software libre,  ampliando la posibilidad de no solo tener un aparato de videojuegos, sino una maquina de entretenimiento, a un precio bastante bueno, y sin necesidad de meterle mano al hardware directamente.

No se cuantas pérdidas o ganancias le podría generar esta accion, pero lo que sí es seguro es que la gente seguirá trabajando para crackear una y otra vez la consola de mayor venta en el mercado en esta generacion, por más que se esfuerce la gran N por cerrar su sistema.  La gente ya no está aislada, trabajan en grandes equipos de software alrededor del mundo generando alternativas mucho más creativas para romper el legado oscuro de los sistemas cerrados ( y si no vean el ejemplo de la PSP, del cual el firmware mas nuevo, el 5.0, fue hackeado en pocas horas).

Espero que todo esto cambie de una manera positiva, permitiendo el desarrollo abierto en las consolas de videojuegos, para aprovechar sus capacidades, las cuales en el wii son muy limitadas en cuanto a poder de procesamiento, lo cual se podrían aprovechar al máximo con un poco de apoyo de la gran N.